Mercurial > hg > Members > koba > home
changeset 0:99a6512a8253
moving from firefly
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi08_11_21.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,110 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 08/12/12</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:08/12/12]</h1> +<h2>並列プログラミングにおけるテストルーチンによる信頼性の向上</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>並列プログラミングにおける<br>テストルーチンによる信頼性の向上</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 工学部 情報工学科</h4> +<h4>No.055722G</h4> +</div> + + +<div class="slide"> +<h1>研究背景・目的</h1> +<ul> +<font size="5"> +当研究室では学生実験において、PlayStation3を用いた並列的なゲームプログラムの作成を行っている。その際に使用されるのが当研究室で開発したCeriumレンダリングエンジンである。Ceriumを用いたプログラミングでは、Taskの管理やデータの転送など、独自の技術を必要としており、従来のプログラミングに比べその信頼性を確保する事は難しい。<br> +<br> +本研究ではCppUnitを用いて、学生の作成したプログラム、およびCerium本体の単体テストを行い、その動作を保証することを目的とする。 +</font> +</ul> +</div> + +<div class="slide"> +<h1>Done</h1> +<ul> +<li>sortプログラムのテスト</li> +<font size="5"> +mainでの全てのテストケースの一括表示を +</font> + +</ul> +</div> + + +<div class="slide"> +<h1>Doing</h1> +<ul> +<li>巨大オブジェクトの表示テスト</li> +<font size="5"> + +</font> + +<li>Automake/Autoconf</li> +<font size="5"> +PS3:libSPEの有無<br> +Linux:dlopen,dlcloseなど +</font> + +</ul> +</div> + + +<div class="slide"> +<h1>To Do</h1> +<ul> +<li>Ceriumを用いたゲーム</li> +<font size="5"> +膨大な数のObjectを用いた戦争ゲーム? +</font> + +<li>Game Objectのmove,collision</li> +<font size="5"> +... +</font> + +</ul> +</div> + +</div> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi08_12_12.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,127 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 08/12/12</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:08/12/12]</h1> +<h2>並列プログラミングにおけるテストルーチンによる信頼性の向上</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>並列プログラミングにおける<br>テストルーチンによる信頼性の向上</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 工学部 情報工学科</h4> +<h4>No.055722G</h4> +</div> + + +<div class="slide"> +<h1>研究背景・目的</h1> +<ul> +<font size="5"> +<li>当研究室では学生実験において、PlayStation3を用いた並列的なゲームプログラムの作成を行っている。</li> +<li>PlayStation3にはCellと呼ばれるCPUが搭載されており、作成したプログラムはCellに最適化させる必要がある。</li> +<li>そこで使用されるのが当研究室で開発したCeriumレンダリングエンジンである。</li> +<li>Ceriumレンダリングエンジンでは、Taskの管理やデータの転送など、Cellの特徴を考えた処理を行っている。</li> +<li>従来のシーケンシャルなプログラミングに比べて、</li> +<br> +<br> +<li>本研究ではCppUnitを用いて、学生の作成したプログラム、およびCerium本体の単体テストを行い、その動作を保証することを目的とする。</li> +</font> +</ul> +</div> + +<div class="slide"> +<h1>Cellの構成</h1> +<ul> + + +</ul> +</div> + +<div class="slide"> +<h1>Cellの構成</h1> +<ul> + + +</ul> +</div> + +<div class="slide"> +<h1>Ceriumとは</h1> +<ul> +<li></li> + +</ul> +</div> + +<div class="slide"> +<h1>Doing</h1> +<ul> +<li>SG_marioのテスト</li> + +</ul> +</div> + + +<div class="slide"> +<h1>SG_marioの処理</h1> +<ul> + + +</ul> +</div> + + +<div class="slide"> +<h1>To Do</h1> +<ul> +<li>Ceriumを用いたゲーム</li> +<font size="5"> +膨大な数のObjectを用いた戦争ゲーム? +</font> + +<li>Game Objectのmove,collision</li> +<font size="5"> +... +</font> + +</ul> +</div> + +</div> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_01_09.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,115 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/01/09</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/01/09]</h1> +<h2>並列プログラミングにおけるテストルーチンによる信頼性の向上</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>並列プログラミングにおける<br>テストルーチンによる信頼性の向上</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 工学部 情報工学科</h4> +<h4>No.055722G</h4> +</div> + + +<div class="slide"> +<h1>研究背景・目的</h1> +<ul> +<font size="4"> +<li>当研究室では学生実験において、PlayStation3を用いた並列的なゲームプログラムの作成を行っている。</li> +<li>PlayStation3にはCellと呼ばれるCPUが搭載されており、作成したプログラムはCellに最適化させる必要がある。</li> +<li>そこで使用されるのが当研究室で開発したCeriumレンダリングエンジンである。</li> +<li>Ceriumには、Taskの管理やデータの転送などを行うTaskManager、オブジェクトのレンダリングを行うRenderingEngine、ゲームの場面(Scene)やルールをTree構造に格納したSceneGraphがある。</li> +<li>Ceriumを用いたプログラムにはTaskやSceneの概念、Cell上でのデータのやりとりなどがある為、期待された動作を保証するのは難しい。</li> +<br> +<li>本研究ではCppUnitを用いて、学生の作成したプログラム、およびCerium本体に対しての単体テストを行う。学生の作成したプログラムに対してはTask単位、Scene単位でのテストを行い、その動作を保証する。</li> +</font> +</ul> +</div> + + +<div class="slide"> +<h1>Doing</h1> +<ul> +<li>Game_project/ps3/tree_dandy2のCeriumへの移行</li> +<font size="5"> +Scene_Graphの適用<font color= red>_doing</font><br> +その他 +</font> + +<li>Test</li> +<font size="5"> +1つのSceneだけを抜き出すテスト<br> +(まずは明らかにおかしい2面ボスシーンを) +</font> +</ul> +</div> + + +<div class="slide"> +<h1>tree_dandy2</h1> +<ul> +<li>move.c</li> +<font size ="5"> +<pre> +void Move() +... + +switch (enemy[tekino].move) { + case 0: + enemy[tekino].x += enemy[tekino].sx; + enemy[tekino].y += enemy[tekino].sy; + break; + case 1: + enemy[tekino].x -= enemy[tekino].sx; + enemy[tekino].y -= enemy[tekino].sy; + break; + case 2: + enemy[tekino].sy -= 0.25; + enemy[tekino].y += enemy[tekino].sy; + break; + ... +</pre> +</font> +</ul> +</div> + +</div> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_01_16.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,155 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/01/16</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/01/16]</h1> +<h2>並列プログラミングにおけるテストルーチンによる信頼性の向上</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>並列プログラミングにおける<br>テストルーチンによる信頼性の向上</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 工学部 情報工学科</h4> +<h4>No.055722G</h4> +</div> + + +<div class="slide"> +<h1>研究背景・目的</h1> +<ul> +<font size="4"> +<li>当研究室では学生実験において、PlayStation3を用いた並列的なゲームプログラムの作成を行っている。</li> +<li>PlayStation3にはCellと呼ばれるCPUが搭載されており、作成したプログラムはCellに最適化させる必要がある。</li> +<li>そこで使用されるのが当研究室で開発したCeriumレンダリングエンジンである。</li> +<li>Ceriumには、Taskの管理やデータの転送などを行うTaskManager、オブジェクトのレンダリングを行うRenderingEngine、ゲームの場面(Scene)やルールをTree構造に格納したSceneGraphがある。</li> +<li>Ceriumを用いたプログラムにはTaskやSceneの概念、Cell上でのデータのやりとりなどがある為、期待された動作を保証するのは難しい。</li> +<br> +<li>本研究ではCppUnitを用いて、学生の作成したプログラム、およびCerium本体に対しての単体テストを行う。学生の作成したプログラムに対してはTask単位、Scene単位でのテストを行い、その動作を保証する。</li> +</font> +</ul> +</div> + + +<div class="slide"> +<h1>TaskManagerとは</h1> +<font size="4"> +TaskManagerは、Taskと呼ばれる分割された各プログラムを管理するライブラリである。 Task同士の依存関係を考慮しながらメモリ上にマッピングし、SPE上ではそのプログラムを DMA転送によりロードする。SPEは256KBという小さなデータ量しか持てず、 大量のプログラムを全てSPE上に置いておく事は出来ない可能性がある。 そのため、必要な時に必要な実行プログラムだけがSPE上にロードされている事が望ましい。(図1) + +<img src="image/TaskManager.jpg" width="30%" height="50%" alt="TaskManager"><br> +図1:TaskManager +</font> +</div> + + +<div class="slide"> +<h1>SceneGraphとは</h1> +<font size="4"> +ゲームの中の一つの場面(Scene)を構成するオブジェクトやその振る舞い、ゲームのルールの集合をSceneGraphとする。SceneGraphのノードは親子関係を持つTreeで構成される。(図2) +<table> +<tr> +<td><img src="image/SceneGraph.jpg" width="" height="" alt=" SceneGraph"></td> +<td> +<font size="3"> +<ul> +<li>Vervatim:ポリゴンオブジェクトの頂点座標 +<li>Texture:ポリゴンオブジェクトのテクスチャ座標 +<li>TextureImage:テクスチャイメージ +<li>TransMatrix:ポリゴンオブジェクトの変換行列 +<li>Coordinates:オブジェクトの座標 +<li>Angle:オブジェクトの角度 +<li>Move:自律的なオブジェクトの動き +<li>Collision:他のノードと衝突した時の動き +</ul> +</font> +</td> +</table> +図2:SceneGraph<br> +<br> +親子関係とは、親オブジェクトの回転や平行移動等の行列計算による頂点座標の変更が、子オブジェクトにも反映する関係の事である。これは子に対してスタックに積まれた親の変換行列をかけることで実現出来る。 +</font> +</div> + + +<div class="slide"> +<h1>Doing</h1> +<ul> +<li>Game_project/ps3/tree_dandy2のCeriumへの移行</li> +<font size="5"> +Scene_Graphの適用<font color= red>_doing</font><br> +その他 +</font> + +<li>Test</li> +<font size="5"> +1つのSceneだけを抜き出すテスト<br> +(まずは明らかにおかしい2面ボスシーンを) +</font> +</ul> +</div> + + +<div class="slide"> +<h1>tree_dandy2</h1> +<ul> +<li>move.c</li> +<font size ="5"> +<pre> +void Move() +... + +switch (enemy[tekino].move) { + case 0: + enemy[tekino].x += enemy[tekino].sx; + enemy[tekino].y += enemy[tekino].sy; + break; + case 1: + enemy[tekino].x -= enemy[tekino].sx; + enemy[tekino].y -= enemy[tekino].sy; + break; + case 2: + enemy[tekino].sy -= 0.25; + enemy[tekino].y += enemy[tekino].sy; + break; + ... +</pre> +</font> +</ul> +</div> + +</div> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_04_14.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,98 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/04/14</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/04/14]</h1> +<h2>発表資料</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>発表資料</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 理工学研究科 情報工学専攻</h4> +<h4>No.098581D</h4> +</div> + +<div class="slide"> +<h1>超弾帝の移植</h1> +<ul> +<li>ソースの修正</li> +<font size="5"> +<li>ダメなソース</li> +<pre> +... + if(node->xyz[0] > screen_w-280) { + node->set_move_collision(boss1_move_left, boss1_collision); + } +... +</pre> +<li>良いソース</li> +<pre> +#define BOSS1_RIGHT_END screen_w-280 +... + if(node->xyz[0] > BOSS1_RIGHT_END) { + node->set_move_collision(boss1_move_left, boss1_collision); + } +... +</pre> +</font> +<br> +<li>オブジェクト指向を使いたい</li> +</ul> +</div> + +<div class="slide"> +<h1>東京で聞いてきました</h1> +<ul> +<li>目の動きに合わせて立体的に見える光学技術</li> +<font size="5"> +<li>ゲームに応用</li> +<li>携帯ゲームに</li> +</font> +<br> +<li>PS3でのプログラミング</li> +<font size="5"> +<li>SCEのツールはダメらしい</li> +<li>各社自前のツールを用意</li> +<br> +<li>SEGAの本は読んだ方が良い</li> +</ul> +</div> + +</div> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_05_12.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,115 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/05/12</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/05/12]</h1> +<h2>発表資料</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>発表資料</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 理工学研究科 情報工学専攻</h4> +<h4>No.098581D</h4> +</div> + +<div class="slide"> +<h1>この連休中にできたこと</h1> + +<ul> +<li>1面ボスの基本的な動き</li> +<li>自機キャラクターの基本的な動きと当たり判定</li> +<li>自機の出す弾の動きと当たり判定・エフェクト</li> +</ul> +</div> + +<div class="slide"> +<h1>1面ボス</h1> + +<ul> +<li>3月時の動きの微調整(継続中)</li> +<li>当たり判定は持ってない</li> +<li>登場時の演出の関係上、こいつが当たり判定を持っていた方が良い</li> +<br> +<li>TO DO</li> +<ul> +<li>ボスのショットの実装</li> +</ul> +</ul> + +</div> + +<div class="slide"> +<h1>自機キャラクター</h1> + +<ul> +<li>操作の実装・ショットの実装(1種類のみ)</li> +<li>自分とボスの当たり判定を持っている(ボスが持った方が良い)</li> +<br> +<li>TO DO</li> +<ul> +<li>左右操作時の旋回モーション</li> +<li>敵に当たったときの爆発モーション&ゲームオーバー処理</li> +</ul> +</ul> + +</div> + +<div class="slide"> +<h1>自機のショット</h1> +<ul> +<li>ボスとの当たり判定(敵に実装が良い)</li> +<li>爆発エフェクトの実装(ちょっと変)</li> +</ul> +</div> + +<div class="slide"> +<h1>全体的な課題</h1> +<ul> +<li>オブジェクトの透過処理</li> +<li>ボスや自機の当たり判定の取り方</li> +<ul> +<li>自機の当たり判定を小さく</li> +<li>ボスの当たり判定を細かく(ボス2への応用)</li> +</ul> +<li>scaleの実装(Blenderで大きさを合わせるのは手間)</li> +</ul> +</div> + +</div> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_05_19.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,130 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/05/19</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/05/19]</h1> +<h2>発表資料</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>発表資料</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 理工学研究科 情報工学専攻</h4> +<h4>No.098581D</h4> +</div> + +<div class="slide"> +<h1>今週やった事</h1> + +<ul> +<li>アルファ値の検出のテスト</li> +<li>スーパーダンディの微調整</li> +</ul> +</div> + +<div class="slide"> +<h1>アルファ値の検出テスト</h1> + +<ul> + <li>ダンディで確認</li> + <li>テクスチャ画像はPNGを使用</li> + <li>画像はプレビューで加工</li> + <li>JPEG2000はSDL_imageが未対応(エラーが出る)</li> +</ul> + +</div> + +<div class="slide"> +<h1>アルファ値の検出テスト</h1> + +<font size=5> +<table border="1" cellpadding="5"> + <caption>SDL_image対応形式</caption> + <tr> + <th>PNG</th> + <td>36KB</td> + </tr> + <tr> + <th>BMP</th> + <td>128KB</td> + </tr + <tr> + <th>GIF</th> + <td>11KB(256色)</td> + </tr> + <tr> + <th>PNM</th> + <td>140KB</td> + </tr> + <tr> + <th>PCX</th> + <td>84KB</td> + </tr> + <tr> + <th>TGA</th> + <td>107.8KB</td> + </tr> + <tr> + <th>XPM</th> + <td>未調査</td> + </tr> + <tr> + <th>LBM</th> + <td>未調査</td> + </tr> + <tr> + <th><font color=red>JP2</font></th> + <td>16KB</td> + </tr> +</table> +</font> +<ul> +<li>JPEG2000に対応させる?</li> +</ul> +</div> + +<div class="slide"> +<h1>ダンディの微調整</h1> +<ul> +<li>爆発エフェクトの挙動の修正</li> +<li>旋回モーションの実装中…</li> +</ul> +</div> + +</div> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_05_26.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,73 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/05/26</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/05/26]</h1> +<h2>発表資料</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>発表資料</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 理工学研究科 情報工学専攻</h4> +<h4>No.098581D</h4> +</div> + +<div class="slide"> +<h1>今週やった事</h1> + +<font size=4>今週何もやりませんでした。スイマセン……</font> +<ul> +<li>MySQLの設定・コード読み</li> +<li>ファジィアルゴリズムの理解</li> +</ul> +</div> + +<div class="slide"> +<h1>これからやる予定の事</h1> +<ul> +<li>Java PathFinderについて詳しく調べる</li> +<li>他にどんなテストがあるか調べる</li> +<li>リアルタイムで値を変える仕組みを実装してみる</li> +<li>併行してGUIをどうするか考える(Ceriumを使う?)</li> +<li>ダンディも進める</li> +</ul> +</div> + +</div> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_06_09.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,108 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/06/09</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/06/09]</h1> +<h2>発表資料</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>発表資料</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 理工学研究科 情報工学専攻</h4> +<h4>No.098581D</h4> +</div> + +<div class="slide"> +<h1>今週やった事</h1> + +<ul> +<li>ソース読み会</li> +<li>Autotools(Automake/Autoconf)の理解と試行</li> +</ul> +</div> + +<div class="slide"> +<h1>Autotoolsの基本的な使い方</h1> +<font size=4> +<ol> +<li>autoscan する</li> +<ul> +<li>configure.scan が生成される</li> +<li>mv configure.scan configure.in する</li> +</ul> +<li>configure.in の編集</li> +<li>Makefile.am を作る</li> +<li>autoheader で configure.in から config.h.in を作る</li> +<li>automake で Makefile.am から Makefile.in を作る</li> +<li>autoconf で configure.in から configure を作る</li> +<li>configure すると Makefile.in から Makefile, config.h.in から config.h が作られる</li> +<li>make で Makefile とconfig.h からTARGET を作り出す。</li> +</ol> +</font> +</div> + +<div class="slide"> +<h1>Autotoolsの基本的な使い方</h1> +<center> +<img src="image/autotools.jpg" width=80% height=80%> +</center> +</div> + +<div class="slide"> +<h1>Autotoolsでできること</h1> +<ul> +<li>コンパイラのチェック</li> +<li>ライブラリのチェック</li> +<li>ヘッダのチェック</li> +<li>関数のチェック</li> +<li>m4 を用いてautoconf で使えるマクロを定義する事が出来る</li> +<li>autoheaderでソースで使用するマクロを定義する事が出来る</li> +</ul> +</div> + +<div class="slide"> +<h1>Ceriumでautotoolsを使うに当たって</h1> +<ul> +<li>libspe2の有無などによって出力するMakefileを変える</li> +<li>LibXXXXManagerは作成するが、各例題はMakefileを作成するに留める</li> +<li>条件文によってコンパイルするファイルを選択できる</li> +<li>Ceriumの階層構造を見直すかどうか</li> +</ul> +</div> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_07_07.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,152 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/07/07</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/07/07]</h1> +<h2>発表資料</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>発表資料</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 理工学研究科 情報工学専攻</h4> +<h4>No.098581D</h4> +</div> + +<div class="slide"> +<h1>DOING</h1> + +<ul> +<li>複数の XML から registSceneGraph() で HashTable に登録する機能の実装</li> +<ul> +<li>HashTable の勉強</li> +<li>コード読み</li> +</ul> +</ul> +</div> + +<div class="slide"> +<h1>Approach</h1> +<ul> +<li>とりあえず SceneGraphPtr を格納する HashTable を作成してみる</li> +<li>registSceneGraph() で HashTable に登録する</li> +<li>createSceneGraph(int id) を変更</li> +</ul> +</div> + +<div class="slide"> +<h1>HashTableの作成</h1> +<ul> +<li>TextureHash, spe/TileHashを参考に</li> +<li>とりあえず書いてみる</li> +<li>Hash 関数を考える</li> +</ul> + +</div> + +<div class="slide"> +<h1>HashTableの作成</h1> +<h2>実装例</h2> +<font size="5"> +<pre> +int +SGHash::put(char *sg_name, SceneGraphPtr data) +{ + int hashval = hash(sg_name); + + for (int i = 0; i < hashSize/2; i++) { + int index = (hashval + i*i)%hashSize; + + if (table[index] == 0) { + table[index] = data; + return index; + } + } + +} + +SceneGraphPtr +SGHash::get(char *sg_name) +{ + int hashval = hash(sg_name); + + for (int i = 0; i < hashSize/2; i++) { + int index = (hashval + i*i)%hashSize; + + if (table[index] != NULL && + table[index]->name == sg_name) { + return table[index]; + } + } +</pre> +</font> +</div> + +<div class="slide"> +<h1>複数のXMLからHashTableに登録</h1> +<ul> +<li>現在の実装</li> +<font size="5"> +<pre> +.. + + sgroot->createFromXMLfile("xml_file/boss1.xml"); + sgroot->createFromXMLfile("xml_file/player1.xml"); + sgroot->createFromXMLfile("xml_file/p_shot.xml"); + sgroot->createFromXMLfile("xml_file/blast.xml"); + +.. +</pre> +</font> +</ul> +</div> + +<div class="slide"> +<h1>今後の課題</h1> +<ul> +<li>以下のような記述を使わないような実装</li> +<font size="5"> +<pre> +#define BOSS1 scene_graph +#define BOSS1_L scene_graph->next +#define BOSS1_R scene_graph->next->next +</pre> +</font> +</ul> +</div> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_09_29.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,111 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/09/29</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/09/29]</h1> +<h2>発表資料</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>Cell を用いた<br> +並列 Game Programming の為の<br> +Cerium Engine の実装</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 理工学研究科 情報工学専攻</h4> +<h4>No.098581D</h4> +</div> + +<div class="slide"> +<h1>研究背景・目的</h1> + +<font size="5"><ul> +<li>近年、CPU の性能向上はクロックの限界や発熱問題などからマルチコア化による +性能向上が図られている</li> +<li>マルチコア CPU の中でも、PlayStation3 に搭載されている Cell と呼ばれる CPU は、 +1つの PPE と8つの SPE をもつヘテロジニアス型のマルチコア CPU である</li> +<li>当研究室では Playstation3 上でのゲーム開発を目的とした Cerium という + Engine を開発している</li> +<li>Cerium にはプログラムを Task 単位で Cell の各アーキテクチャに処理させる TaskManager と + Object をScene 毎に管理する SceneGraph、Object の描画をする RenderingEngine がある</li> +<br> +<li>本研究ではこの Cerium を使った一般的なゲームの作成を実現するための様々な実装を行う</li> +</ul></font> +</div> + +<div class="slide"> +<h1>DONE</h1> +<ul> +<li>OSC 準備 & OSC</li> +</ul> +</div> + +<div class="slide"> +<h1>DOING</h1> +<h2>超弾帝を移植する為の必要事項の洗い出し</h2> +<ul> +<li>状態遷移</li> +<ul> +<li>property 内のHP等を見てif文 → Move のコードの書き換え?</li> +</ul> +<li>collision の実装</li> +<ul> +<li>property の他 Object の座標を見て衝突判定</li> +<li>Dandy なら1つの Object につき敵と自分,弾</li> +<li>当たったら property 内のフラグが立つ</li> +<li>collision と move は別 SPE で計算?</li> +</ul> +<li>Object が大量にあった場合</li> +<ul> +<li>property の検索が必要 → Hash?</li> +</ul> +<li>音楽</li> +<li>etc...</li> +</ul> + +</div> + +<div class="slide"> +<h1>TODO</h1> +<ul> +<li>Dandy 移植に向けた Cerium の実装</li> +<li>Cerium 用の Dandy を書く</li> +</ul> +</div> + + +</div> +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_10_06.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,103 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/10/06</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/10/06]</h1> +<h2>発表資料</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>Cell を用いた<br> +並列 Game Programming の為の<br> +Cerium Engine の実装</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 理工学研究科 情報工学専攻</h4> +<h4>No.098581D</h4> +</div> + +<div class="slide"> +<h1>研究背景・目的</h1> + +<font size="5"><ul> +<li>近年、CPU の性能向上はクロックの限界や発熱問題などからマルチコア化による +性能向上が図られている</li> +<li>マルチコア CPU の中でも、PlayStation3 に搭載されている Cell と呼ばれる CPU は、 +1つの PPE と8つの SPE をもつヘテロジニアス型のマルチコア CPU である</li> +<li>当研究室では Playstation3 上でのゲーム開発を目的とした Cerium という + Engine を開発している</li> +<li>Cerium にはプログラムを Task 単位で Cell の各アーキテクチャに処理させる TaskManager と + Object をScene 毎に管理する SceneGraph、Object の描画をする RenderingEngine がある</li> +<br> +<li>本研究では Cerium の実装として</li> +<ul> +<li>Test</li> +<li>音声</li> +<li>MARS</li> +</ul> +</ul></font> +</div> + +<div class="slide"> +<h1>DONE</h1> +<ul> +<li>Dandy の BMP ファイルを PNG 化 & 透過処理</li> +</ul> +</div> + +<div class="slide"> +<h1>DOING</h1> +<ul> +<li>XML ファイルの作成</li> +<ul> +<li>ボス戦 ver</li> +<li>1面 ver</li> +</ul> + +</ul> +</div> + +<div class="slide"> +<h1>TODO</h1> +<ul> +<li>現時点で動く Dandy の作成</li> +<li>次期 Cerium の仕様に合わせた Dandy の作成</li> +</ul> +</div> + + +</div> +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_10_20.html Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,202 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/10/20</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/10/20]</h1> +<h2>発表資料</h2> +</div> + +</div> + + + +<div class="presentation"> + + +<div class="slide"> +<h1>Cell を用いた<br> +並列 Programming の為の<br> +テスト手法の提案</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 理工学研究科 情報工学専攻</h4> +<h4>No.098581D</h4> +</div> + + +<div class="slide"> +<h1>研究背景・目的</h1> + +<font size="5"><ul> +<li>近年、CPU の性能向上はクロックの限界や発熱問題などからマルチコア化による +性能向上が図られている</li> +<li>マルチコア CPU の中でも、PlayStation3 に搭載されている Cell と呼ばれる CPU は、 +1つの PPE と8つの SPE をもつヘテロジニアス型のマルチコア CPU である</li> +<li>各 SPE は 256KB の LocalStore(LS) を持ち、 +必要に応じて MainMemory 上の Data を LS に Load して実行する</li> +<li>並列 Programming における計算の順序性と Cell 独自の仕様により、 +Cell 上での Program の Debug は通常の Program に比べて困難である</li> +</ul></font> +</div> + + +<div class="slide"> +<h1>研究背景・目的</h1> + +<font size="5"><ul> +<li>本研究では Cell 上で動く Program の正常な動作を保証するテスト手法を提案する</li> +<li>Program の順序性と PPE, SPE 上での Data 管理の面からテスト手法を考える</li> +<li>当研究室で開発した Cerium というPlayStation3 上で動作する Engine を用いてテストを行う</li> +<li>Cerium にはプログラムを Task 単位で Cell の各アーキテクチャに処理させる TaskManager と + Object をScene 毎に管理する SceneGraph、Object の描画をする RenderingEngine がある</li> +</ul></font> +</div> + +<div class="slide"> +<h1>DONE</h1> +<ul> +<li>SnowLeopard 上での Cerium 開発環境</li> +<li>Dandy のタイトル画面追加</li> +</ul> +</div> + + +<div class="slide"> +<h1>SnowLeopard 上でのCerium 開発環境</h1> +<h2>GCC, G++</h2> +<ul> +<li>default ではgcc-4.2</li> +<li>gcc-4.2 だと cast 等で error</li> +<pre> + $sudo mv /usr/bin/gcc /usr/bin/gcc4.2 + $sudo mv /usr/bin/g++ /usr/bin/g++4.2 + $sudo ln -s /usr/bin/gcc-4.0 /usr/bin/gcc + $sudo ln -s /usr/bin/g++-4.0 /usr/bin/g++ +</pre> +</ul> +</div> + + +<div class="slide"> +<h1>SnowLeopard 上でのCerium 開発環境</h1> +<h2>SDL</h2> +<ul> +<li>SDL-1.2.13 の Option を変えて Compile</li> +<pre> + $env CC='/usr/bin/gcc-4.0' CFLAGS='-isysroot + /Developer/SDKs/MacOSX10.5.sdk -arch i386' + LDFLAGS='-arch i386' ./configure + --prefix=/sw --without-x + $make + ... +</pre> +<li>うまく行かない…</li> +<li>SDL-1.3 がSnowLeopard で動くらしい</li> +<li>…と思ったら、10月6日に SnowLeopard 対応の SDL-1.2.14 公開</li> +</ul> +</div> + + +<div class="slide"> +<h1>DOING</h1> +<ul> +<li>汎用的な collision 関数の実装</li> +<li>爆発アニメーションの実装</li> +<li>Blender file の作成</li> +</ul> +</div> + + +<div class="slide"> +<h1>汎用的な collision 関数の実装</h1> +<font size="5"><pre> +static bool +collision_judge(SceneGraphIteratorPtr it, SceneGraphPtr myself, + int obj_id, int my_radius, int enemy_radius) +{ + /* 自分と相手のx,y座標での距離と2点間の距離 */ + float x_distant, y_distant, distance; + SceneGraphPtr enemy; + + for (; it->hasNext(obj_id);) { + it->next(obj_id); + enemy = it->get(); + + x_distant = enemy->xyz[0] - myself->xyz[0]; + y_distant = enemy->xyz[1] - myself->xyz[1]; + + /* hypotf で2点間の距離を求める */ + distance = hypotf(x_distant, y_distant); + + /* collision 判定 */ + if(distance < (my_radius+enemy_radius)) { + return true; + } + return false; + } +} +</pre></font> + +</div> + + +<div class="slide"> +<h1>爆発アニメーションの実装</h1> +<font size="5"><pre> +static void +blast_move(SceneGraphPtr node, int screen_w, int screen_h) +{ + if(node->sgid > BLAST8 && node->frame%blast_interval == 0) { + SceneGraphPtr next_blast = sgroot->createSceneGraph(node->sgid-1); + next_blast->frame = 1; + next_blast->set_move_collision(blast_move, null_collision); + node->addBrother(next_blast); + node->remove(); + } +} +</pre></font> + +</div> + + +<div class="slide"> +<h1>TODO</h1> +<ul> +<li>PS3 上でテスト</li> +<li>引き続き Dandy の実装</li> +<li>example を用いたテスト</li> +</ul> +</div> + + + +</div> +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/semi09_10_20.html~ Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,103 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> + +<html xmlns="http://www.w3.org/1999/xhtml"> + +<head> +<title>ゼミ資料 09/10/06</title> +<!-- metadata --> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta name="generator" content="S5" /> +<meta name="version" content="S5 1.1" /> +<meta name="presdate" content="20050728" /> +<meta name="author" content="Eric A. Meyer" /> +<meta name="company" content="Complex Spiral Consulting" /> +<!-- configuration parameters --> +<meta name="defaultView" content="slideshow" /> +<meta name="controlVis" content="hidden" /> +<!-- style sheet links --> +<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" /> +<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" /> +<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" /> +<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" /> +<!-- S5 JS --> +<script src="ui/default/slides.js" type="text/javascript"></script> +</head> +<body> + +<div class="layout"> +<div id="controls"><!-- DO NOT EDIT --></div> +<div id="currentSlide"><!-- DO NOT EDIT --></div> +<div id="header"></div> +<div id="footer"> +<h1>[date:09/10/06]</h1> +<h2>発表資料</h2> +</div> + +</div> + + +<div class="presentation"> + +<div class="slide"> +<h1>Cell を用いた<br> +並列 Game Programming の為の<br> +Cerium Engine の実装</h1> +<h3>小林 佑亮</h3> +<h4>琉球大学 理工学研究科 情報工学専攻</h4> +<h4>No.098581D</h4> +</div> + +<div class="slide"> +<h1>研究背景・目的</h1> + +<font size="5"><ul> +<li>近年、CPU の性能向上はクロックの限界や発熱問題などからマルチコア化による +性能向上が図られている</li> +<li>マルチコア CPU の中でも、PlayStation3 に搭載されている Cell と呼ばれる CPU は、 +1つの PPE と8つの SPE をもつヘテロジニアス型のマルチコア CPU である</li> +<li>当研究室では Playstation3 上でのゲーム開発を目的とした Cerium という + Engine を開発している</li> +<li>Cerium にはプログラムを Task 単位で Cell の各アーキテクチャに処理させる TaskManager と + Object をScene 毎に管理する SceneGraph、Object の描画をする RenderingEngine がある</li> +<br> +<li>本研究では Cerium の実装として</li> +<ul> +<li>Test</li> +<li>音声</li> +<li>MARS</li> +</ul> +</ul></font> +</div> + +<div class="slide"> +<h1>DONE</h1> +<ul> +<li>Dandy の BMP ファイルを PNG 化 & 透過処理</li> +</ul> +</div> + +<div class="slide"> +<h1>DOING</h1> +<ul> +<li>XML ファイルの作成</li> +<ul> +<li>ボス戦 ver</li> +<li>1面 ver</li> +</ul> + +</ul> +</div> + +<div class="slide"> +<h1>TODO</h1> +<ul> +<li>現時点で動く Dandy の作成</li> +<li>次期 Cerium の仕様に合わせた Dandy の作成</li> +</ul> +</div> + + +</div> +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/ui/default/framing.css Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,23 @@ +/* The following styles size, place, and layer the slide components. + Edit these if you want to change the overall slide layout. + The commented lines can be uncommented (and modified, if necessary) + to help you with the rearrangement process. */ + +/* target = 1024x768 */ + +div#header, div#footer, .slide {width: 100%; top: 0; left: 0;} +div#header {top: 0; height: 3em; z-index: 1;} +div#footer {top: auto; bottom: 0; height: 2.5em; z-index: 5;} +.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2; list-style: none;} +div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;} +div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; + margin: 0;} +#currentSlide {position: absolute; width: 10%; left: 45%; bottom: 1em; z-index: 10;} +html>body #currentSlide {position: fixed;} + +/* +div#header {background: #FCC;} +div#footer {background: #CCF;} +div#controls {background: #BBD;} +div#currentSlide {background: #FFC;} +*/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/ui/default/iepngfix.htc Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,42 @@ +<public:component> +<public:attach event="onpropertychange" onevent="doFix()" /> + +<script> + +// IE5.5+ PNG Alpha Fix v1.0 by Angus Turnbull http://www.twinhelix.com +// Free usage permitted as long as this notice remains intact. + +// This must be a path to a blank image. That's all the configuration you need here. +var blankImg = 'ui/default/blank.gif'; + +var f = 'DXImageTransform.Microsoft.AlphaImageLoader'; + +function filt(s, m) { + if (filters[f]) { + filters[f].enabled = s ? true : false; + if (s) with (filters[f]) { src = s; sizingMethod = m } + } else if (s) style.filter = 'progid:'+f+'(src="'+s+'",sizingMethod="'+m+'")'; +} + +function doFix() { + if ((parseFloat(navigator.userAgent.match(/MSIE (\S+)/)[1]) < 5.5) || + (event && !/(background|src)/.test(event.propertyName))) return; + + if (tagName == 'IMG') { + if ((/\.png$/i).test(src)) { + filt(src, 'image'); // was 'scale' + src = blankImg; + } else if (src.indexOf(blankImg) < 0) filt(); + } else if (style.backgroundImage) { + if (style.backgroundImage.match(/^url[("']+(.*\.png)[)"']+$/i)) { + var s = RegExp.$1; + style.backgroundImage = ''; + filt(s, 'crop'); + } else filt(); + } +} + +doFix(); + +</script> +</public:component> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/ui/default/opera.css Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,7 @@ +/* DO NOT CHANGE THESE unless you really want to break Opera Show */ +.slide { + visibility: visible !important; + position: static !important; + page-break-before: always; +} +#slide0 {page-break-before: avoid;}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/ui/default/outline.css Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,15 @@ +/* don't change this unless you want the layout stuff to show up in the outline view! */ + +.layout div, #footer *, #controlForm * {display: none;} +#footer, #controls, #controlForm, #navLinks, #toggle { + display: block; visibility: visible; margin: 0; padding: 0;} +#toggle {float: right; padding: 0.5em;} +html>body #toggle {position: fixed; top: 0; right: 0;} + +/* making the outline look pretty-ish */ + +#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;} +#slide0 h1 {padding-top: 1.5em;} +.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em; + border-top: 1px solid #888; border-bottom: 1px solid #AAA;} +#toggle {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/ui/default/pretty.css Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,86 @@ +/* Following are the presentation styles -- edit away! */ + +body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-size: 2em;} +:link, :visited {text-decoration: none; color: #00C;} +#controls :active {color: #88A !important;} +#controls :focus {outline: 1px dotted #227;} +h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} +ul, pre {margin: 0; line-height: 1em;} +html, body {margin: 0; padding: 0;} + +blockquote, q {font-style: italic;} +blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;} +blockquote p {margin: 0;} +blockquote i {font-style: normal;} +blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;} +blockquote b i {font-style: italic;} + +kbd {font-weight: bold; font-size: 1em;} +sup {font-size: smaller; line-height: 1px;} + +.slide code {padding: 2px 0.25em; font-weight: bold; color: #533;} +.slide code.bad, code del {color: red;} +.slide code.old {color: silver;} +.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;} +.slide pre code {display: block;} +.slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;} +.slide li {margin-top: 0.75em; margin-right: 0;} +.slide ul ul {line-height: 1;} +.slide ul ul li {margin: .2em; font-size: 85%; list-style: square;} +.slide img.leader {display: block; margin: 0 auto;} + +div#header, div#footer {background: #005; color: #AAB; + font-family: Verdana, Helvetica, sans-serif;} +div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat; + line-height: 1px;} +div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;} +#footer h1, #footer h2 {display: block; padding: 0 1em;} +#footer h2 {font-style: italic;} + +div.long {font-size: 0.75em;} +.slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1; + margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap; + font: bold 150%/1em Helvetica, sans-serif; text-transform: capitalize; + color: #DDE; background: #005;} +.slide h3 {font-size: 130%;} +h1 abbr {font-variant: small-caps;} + +div#controls {position: absolute; left: 50%; bottom: 0; + width: 50%; + text-align: right; font: bold 0.9em Verdana, Helvetica, sans-serif;} +html>body div#controls {position: fixed; padding: 0 0 1em 0; + top: auto;} +div#controls form {position: absolute; bottom: 0; right: 0; width: 100%; + margin: 0; padding: 0;} +#controls #navLinks a {padding: 0; margin: 0 0.5em; + background: #005; border: none; color: #779; + cursor: pointer;} +#controls #navList {height: 1em;} +#controls #navList #jumplist {position: absolute; bottom: 0; right: 0; background: #DDD; color: #227;} + +#currentSlide {text-align: center; font-size: 0.5em; color: #449;} + +#slide0 {padding-top: 3.5em; font-size: 90%;} +#slide0 h1 {position: static; margin: 1em 0 0; padding: 0; + font: bold 2em Helvetica, sans-serif; white-space: normal; + color: #000; background: transparent;} +#slide0 h2 {font: bold italic 1em Helvetica, sans-serif; margin: 0.25em;} +#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;} +#slide0 h4 {margin-top: 0; font-size: 1em;} + +ul.urls {list-style: none; display: inline; margin: 0;} +.urls li {display: inline; margin: 0;} +.note {display: none;} +.external {border-bottom: 1px dotted gray;} +html>body .external {border-bottom: none;} +.external:after {content: " \274F"; font-size: smaller; color: #77B;} + +.incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;} +img.incremental {visibility: hidden;} +.slide .current {color: #B02;} + + +/* diagnostics + +li:after {content: " [" attr(class) "]"; color: #F88;} + */ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/ui/default/print.css Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,1 @@ +/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ .slide, ul {page-break-inside: avoid; visibility: visible !important;} h1 {page-break-after: avoid;} body {font-size: 12pt; background: white;} * {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} #slide0 h3 {margin: 0; padding: 0;} #slide0 h4 {margin: 0 0 0.5em; padding: 0;} #slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} .extra {background: transparent !important;} div.extra, pre.extra, .example {font-size: 10pt; color: #333;} ul.extra a {font-weight: bold;} p.example {display: none;} #header {display: none;} #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} #footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */ .layout, .layout * {display: none !important;} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/ui/default/s5-core.css Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,9 @@ +/* Do not edit or override these styles! The system will likely break if you do. */ + +div#header, div#footer, div#controls, .slide {position: absolute;} +html>body div#header, html>body div#footer, + html>body div#controls, html>body .slide {position: fixed;} +.handout {display: none;} +.layout {display: block;} +.slide, .hideme, .incremental {visibility: hidden;} +#slide0 {visibility: visible;}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/ui/default/slides.css Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,3 @@ +@import url(s5-core.css); /* required to make the slide show run at all */ +@import url(framing.css); /* sets basic placement and size of slide components */ +@import url(pretty.css); /* stuff that makes the slides look better than blah */ \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/presentation/ui/default/slides.js Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,553 @@ +// S5 v1.1 slides.js -- released into the Public Domain +// +// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information +// about all the wonderful and talented contributors to this code! + +var undef; +var slideCSS = ''; +var snum = 0; +var smax = 1; +var incpos = 0; +var number = undef; +var s5mode = true; +var defaultView = 'slideshow'; +var controlVis = 'visible'; + +var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0; +var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0; +var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0; + +function hasClass(object, className) { + if (!object.className) return false; + return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); +} + +function hasValue(object, value) { + if (!object) return false; + return (object.search('(^|\\s)' + value + '(\\s|$)') != -1); +} + +function removeClass(object,className) { + if (!object) return; + object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2); +} + +function addClass(object,className) { + if (!object || hasClass(object, className)) return; + if (object.className) { + object.className += ' '+className; + } else { + object.className = className; + } +} + +function GetElementsWithClassName(elementName,className) { + var allElements = document.getElementsByTagName(elementName); + var elemColl = new Array(); + for (var i = 0; i< allElements.length; i++) { + if (hasClass(allElements[i], className)) { + elemColl[elemColl.length] = allElements[i]; + } + } + return elemColl; +} + +function isParentOrSelf(element, id) { + if (element == null || element.nodeName=='BODY') return false; + else if (element.id == id) return true; + else return isParentOrSelf(element.parentNode, id); +} + +function nodeValue(node) { + var result = ""; + if (node.nodeType == 1) { + var children = node.childNodes; + for (var i = 0; i < children.length; ++i) { + result += nodeValue(children[i]); + } + } + else if (node.nodeType == 3) { + result = node.nodeValue; + } + return(result); +} + +function slideLabel() { + var slideColl = GetElementsWithClassName('*','slide'); + var list = document.getElementById('jumplist'); + smax = slideColl.length; + for (var n = 0; n < smax; n++) { + var obj = slideColl[n]; + + var did = 'slide' + n.toString(); + obj.setAttribute('id',did); + if (isOp) continue; + + var otext = ''; + var menu = obj.firstChild; + if (!menu) continue; // to cope with empty slides + while (menu && menu.nodeType == 3) { + menu = menu.nextSibling; + } + if (!menu) continue; // to cope with slides with only text nodes + + var menunodes = menu.childNodes; + for (var o = 0; o < menunodes.length; o++) { + otext += nodeValue(menunodes[o]); + } + list.options[list.length] = new Option(n + ' : ' + otext, n); + } +} + +function currentSlide() { + var cs; + if (document.getElementById) { + cs = document.getElementById('currentSlide'); + } else { + cs = document.currentSlide; + } + cs.innerHTML = '<span id="csHere">' + snum + '<\/span> ' + + '<span id="csSep">\/<\/span> ' + + '<span id="csTotal">' + (smax-1) + '<\/span>'; + if (snum == 0) { + cs.style.visibility = 'hidden'; + } else { + cs.style.visibility = 'visible'; + } +} + +function go(step) { + if (document.getElementById('slideProj').disabled || step == 0) return; + var jl = document.getElementById('jumplist'); + var cid = 'slide' + snum; + var ce = document.getElementById(cid); + if (incrementals[snum].length > 0) { + for (var i = 0; i < incrementals[snum].length; i++) { + removeClass(incrementals[snum][i], 'current'); + removeClass(incrementals[snum][i], 'incremental'); + } + } + if (step != 'j') { + snum += step; + lmax = smax - 1; + if (snum > lmax) snum = lmax; + if (snum < 0) snum = 0; + } else + snum = parseInt(jl.value); + var nid = 'slide' + snum; + var ne = document.getElementById(nid); + if (!ne) { + ne = document.getElementById('slide0'); + snum = 0; + } + if (step < 0) {incpos = incrementals[snum].length} else {incpos = 0;} + if (incrementals[snum].length > 0 && incpos == 0) { + for (var i = 0; i < incrementals[snum].length; i++) { + if (hasClass(incrementals[snum][i], 'current')) + incpos = i + 1; + else + addClass(incrementals[snum][i], 'incremental'); + } + } + if (incrementals[snum].length > 0 && incpos > 0) + addClass(incrementals[snum][incpos - 1], 'current'); + ce.style.visibility = 'hidden'; + ne.style.visibility = 'visible'; + jl.selectedIndex = snum; + currentSlide(); + number = 0; +} + +function goTo(target) { + if (target >= smax || target == snum) return; + go(target - snum); +} + +function subgo(step) { + if (step > 0) { + removeClass(incrementals[snum][incpos - 1],'current'); + removeClass(incrementals[snum][incpos], 'incremental'); + addClass(incrementals[snum][incpos],'current'); + incpos++; + } else { + incpos--; + removeClass(incrementals[snum][incpos],'current'); + addClass(incrementals[snum][incpos], 'incremental'); + addClass(incrementals[snum][incpos - 1],'current'); + } +} + +function toggle() { + var slideColl = GetElementsWithClassName('*','slide'); + var slides = document.getElementById('slideProj'); + var outline = document.getElementById('outlineStyle'); + if (!slides.disabled) { + slides.disabled = true; + outline.disabled = false; + s5mode = false; + fontSize('1em'); + for (var n = 0; n < smax; n++) { + var slide = slideColl[n]; + slide.style.visibility = 'visible'; + } + } else { + slides.disabled = false; + outline.disabled = true; + s5mode = true; + fontScale(); + for (var n = 0; n < smax; n++) { + var slide = slideColl[n]; + slide.style.visibility = 'hidden'; + } + slideColl[snum].style.visibility = 'visible'; + } +} + +function showHide(action) { + var obj = GetElementsWithClassName('*','hideme')[0]; + switch (action) { + case 's': obj.style.visibility = 'visible'; break; + case 'h': obj.style.visibility = 'hidden'; break; + case 'k': + if (obj.style.visibility != 'visible') { + obj.style.visibility = 'visible'; + } else { + obj.style.visibility = 'hidden'; + } + break; + } +} + +// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/) +function keys(key) { + if (!key) { + key = event; + key.which = key.keyCode; + } + if (key.which == 84) { + toggle(); + return; + } + if (s5mode) { + switch (key.which) { + case 10: // return + case 13: // enter + if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; + if (key.target && isParentOrSelf(key.target, 'controls')) return; + if(number != undef) { + goTo(number); + break; + } + case 32: // spacebar + case 34: // page down + case 39: // rightkey + case 40: // downkey + if(number != undef) { + go(number); + } else if (!incrementals[snum] || incpos >= incrementals[snum].length) { + go(1); + } else { + subgo(1); + } + break; + case 33: // page up + case 37: // leftkey + case 38: // upkey + if(number != undef) { + go(-1 * number); + } else if (!incrementals[snum] || incpos <= 0) { + go(-1); + } else { + subgo(-1); + } + break; + case 36: // home + goTo(0); + break; + case 35: // end + goTo(smax-1); + break; + case 67: // c + showHide('k'); + break; + } + if (key.which < 48 || key.which > 57) { + number = undef; + } else { + if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) return; + if (key.target && isParentOrSelf(key.target, 'controls')) return; + number = (((number != undef) ? number : 0) * 10) + (key.which - 48); + } + } + return false; +} + +function clicker(e) { + number = undef; + var target; + if (window.event) { + target = window.event.srcElement; + e = window.event; + } else target = e.target; + if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) return true; + if (!e.which || e.which == 1) { + if (!incrementals[snum] || incpos >= incrementals[snum].length) { + go(1); + } else { + subgo(1); + } + } +} + +function findSlide(hash) { + var target = null; + var slides = GetElementsWithClassName('*','slide'); + for (var i = 0; i < slides.length; i++) { + var targetSlide = slides[i]; + if ( (targetSlide.name && targetSlide.name == hash) + || (targetSlide.id && targetSlide.id == hash) ) { + target = targetSlide; + break; + } + } + while(target != null && target.nodeName != 'BODY') { + if (hasClass(target, 'slide')) { + return parseInt(target.id.slice(5)); + } + target = target.parentNode; + } + return null; +} + +function slideJump() { + if (window.location.hash == null) return; + var sregex = /^#slide(\d+)$/; + var matches = sregex.exec(window.location.hash); + var dest = null; + if (matches != null) { + dest = parseInt(matches[1]); + } else { + dest = findSlide(window.location.hash.slice(1)); + } + if (dest != null) + go(dest - snum); +} + +function fixLinks() { + var thisUri = window.location.href; + thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length); + var aelements = document.getElementsByTagName('A'); + for (var i = 0; i < aelements.length; i++) { + var a = aelements[i].href; + var slideID = a.match('\#slide[0-9]{1,2}'); + if ((slideID) && (slideID[0].slice(0,1) == '#')) { + var dest = findSlide(slideID[0].slice(1)); + if (dest != null) { + if (aelements[i].addEventListener) { + aelements[i].addEventListener("click", new Function("e", + "if (document.getElementById('slideProj').disabled) return;" + + "go("+dest+" - snum); " + + "if (e.preventDefault) e.preventDefault();"), true); + } else if (aelements[i].attachEvent) { + aelements[i].attachEvent("onclick", new Function("", + "if (document.getElementById('slideProj').disabled) return;" + + "go("+dest+" - snum); " + + "event.returnValue = false;")); + } + } + } + } +} + +function externalLinks() { + if (!document.getElementsByTagName) return; + var anchors = document.getElementsByTagName('a'); + for (var i=0; i<anchors.length; i++) { + var anchor = anchors[i]; + if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) { + anchor.target = '_blank'; + addClass(anchor,'external'); + } + } +} + +function createControls() { + var controlsDiv = document.getElementById("controls"); + if (!controlsDiv) return; + var hider = ' onmouseover="showHide(\'s\');" onmouseout="showHide(\'h\');"'; + var hideDiv, hideList = ''; + if (controlVis == 'hidden') { + hideDiv = hider; + } else { + hideList = hider; + } + controlsDiv.innerHTML = '<form action="#" id="controlForm"' + hideDiv + '>' + + '<div id="navLinks">' + + '<a accesskey="t" id="toggle" href="javascript:toggle();">Ø<\/a>' + + '<a accesskey="z" id="prev" href="javascript:go(-1);">«<\/a>' + + '<a accesskey="x" id="next" href="javascript:go(1);">»<\/a>' + + '<div id="navList"' + hideList + '><select id="jumplist" onchange="go(\'j\');"><\/select><\/div>' + + '<\/div><\/form>'; + if (controlVis == 'hidden') { + var hidden = document.getElementById('navLinks'); + } else { + var hidden = document.getElementById('jumplist'); + } + addClass(hidden,'hideme'); +} + +function fontScale() { // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers + if (!s5mode) return false; + var vScale = 22; // both yield 32 (after rounding) at 1024x768 + var hScale = 32; // perhaps should auto-calculate based on theme's declared value? + if (window.innerHeight) { + var vSize = window.innerHeight; + var hSize = window.innerWidth; + } else if (document.documentElement.clientHeight) { + var vSize = document.documentElement.clientHeight; + var hSize = document.documentElement.clientWidth; + } else if (document.body.clientHeight) { + var vSize = document.body.clientHeight; + var hSize = document.body.clientWidth; + } else { + var vSize = 700; // assuming 1024x768, minus chrome and such + var hSize = 1024; // these do not account for kiosk mode or Opera Show + } + var newSize = Math.min(Math.round(vSize/vScale),Math.round(hSize/hScale)); + fontSize(newSize + 'px'); + if (isGe) { // hack to counter incremental reflow bugs + var obj = document.getElementsByTagName('body')[0]; + obj.style.display = 'none'; + obj.style.display = 'block'; + } +} + +function fontSize(value) { + if (!(s5ss = document.getElementById('s5ss'))) { + if (!isIE) { + document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style')); + s5ss.setAttribute('media','screen, projection'); + s5ss.setAttribute('id','s5ss'); + } else { + document.createStyleSheet(); + document.s5ss = document.styleSheets[document.styleSheets.length - 1]; + } + } + if (!isIE) { + while (s5ss.lastChild) s5ss.removeChild(s5ss.lastChild); + s5ss.appendChild(document.createTextNode('body {font-size: ' + value + ' !important;}')); + } else { + document.s5ss.addRule('body','font-size: ' + value + ' !important;'); + } +} + +function notOperaFix() { + slideCSS = document.getElementById('slideProj').href; + var slides = document.getElementById('slideProj'); + var outline = document.getElementById('outlineStyle'); + slides.setAttribute('media','screen'); + outline.disabled = true; + if (isGe) { + slides.setAttribute('href','null'); // Gecko fix + slides.setAttribute('href',slideCSS); // Gecko fix + } + if (isIE && document.styleSheets && document.styleSheets[0]) { + document.styleSheets[0].addRule('img', 'behavior: url(ui/default/iepngfix.htc)'); + document.styleSheets[0].addRule('div', 'behavior: url(ui/default/iepngfix.htc)'); + document.styleSheets[0].addRule('.slide', 'behavior: url(ui/default/iepngfix.htc)'); + } +} + +function getIncrementals(obj) { + var incrementals = new Array(); + if (!obj) + return incrementals; + var children = obj.childNodes; + for (var i = 0; i < children.length; i++) { + var child = children[i]; + if (hasClass(child, 'incremental')) { + if (child.nodeName == 'OL' || child.nodeName == 'UL') { + removeClass(child, 'incremental'); + for (var j = 0; j < child.childNodes.length; j++) { + if (child.childNodes[j].nodeType == 1) { + addClass(child.childNodes[j], 'incremental'); + } + } + } else { + incrementals[incrementals.length] = child; + removeClass(child,'incremental'); + } + } + if (hasClass(child, 'show-first')) { + if (child.nodeName == 'OL' || child.nodeName == 'UL') { + removeClass(child, 'show-first'); + if (child.childNodes[isGe].nodeType == 1) { + removeClass(child.childNodes[isGe], 'incremental'); + } + } else { + incrementals[incrementals.length] = child; + } + } + incrementals = incrementals.concat(getIncrementals(child)); + } + return incrementals; +} + +function createIncrementals() { + var incrementals = new Array(); + for (var i = 0; i < smax; i++) { + incrementals[i] = getIncrementals(document.getElementById('slide'+i)); + } + return incrementals; +} + +function defaultCheck() { + var allMetas = document.getElementsByTagName('meta'); + for (var i = 0; i< allMetas.length; i++) { + if (allMetas[i].name == 'defaultView') { + defaultView = allMetas[i].content; + } + if (allMetas[i].name == 'controlVis') { + controlVis = allMetas[i].content; + } + } +} + +// Key trap fix, new function body for trap() +function trap(e) { + if (!e) { + e = event; + e.which = e.keyCode; + } + try { + modifierKey = e.ctrlKey || e.altKey || e.metaKey; + } + catch(e) { + modifierKey = false; + } + return modifierKey || e.which == 0; +} + +function startup() { + defaultCheck(); + if (!isOp) + createControls(); + slideLabel(); + fixLinks(); + externalLinks(); + fontScale(); + if (!isOp) { + notOperaFix(); + incrementals = createIncrementals(); + slideJump(); + if (defaultView == 'outline') { + toggle(); + } + document.onkeyup = keys; + document.onkeypress = trap; + document.onclick = clicker; + } +} + +window.onload = startup; +window.onresize = function(){setTimeout('fontScale()', 50);} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/document/制作するゲーム案.mm Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,54 @@ +<map version="0.8.1"> +<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net --> +<node CREATED="1247040879471" ID="Freemind_Link_278271315" MODIFIED="1247040890053" TEXT="制作するゲーム案"> +<node CREATED="1247040895585" ID="_" MODIFIED="1247040952879" POSITION="right" TEXT="リアルタイムシミュレーション"> +<node CREATED="1247040982483" ID="Freemind_Link_339029525" MODIFIED="1247041201327" TEXT="互いに小隊・大隊をリアルタイムに配置、進軍"/> +<node CREATED="1247041241012" ID="Freemind_Link_1206193556" MODIFIED="1247041258527" TEXT="天候・気候なども考える"> +<node CREATED="1247041260628" ID="Freemind_Link_1584131575" MODIFIED="1247041335854" TEXT="堤を切って水攻めとか"/> +</node> +<node CREATED="1247041450545" ID="Freemind_Link_1181701372" MODIFIED="1247041464581" TEXT="建築物・ユニットの優劣など"/> +</node> +<node CREATED="1247040954275" ID="Freemind_Link_395876312" MODIFIED="1247040969399" POSITION="right" TEXT="レーシングゲーム"> +<node CREATED="1247041475898" ID="Freemind_Link_1801938830" MODIFIED="1247042006547" TEXT="飛行機・車・ホバークラフト混在"/> +<node CREATED="1247043105943" ID="Freemind_Link_1609970391" MODIFIED="1247043118841" TEXT="公道をモデリング、そこで走る"> +<node CREATED="1247043121391" ID="Freemind_Link_1129215756" MODIFIED="1247043154619" TEXT="沖縄なら58や330?北部の林道?"/> +</node> +</node> +<node CREATED="1247042179743" ID="Freemind_Link_1659311807" MODIFIED="1247042185186" POSITION="right" TEXT="RPG"> +<node CREATED="1247042190400" ID="Freemind_Link_1659352497" MODIFIED="1247042227812" TEXT="テーブルトークRPGを今の技術で"> +<node CREATED="1247042232409" ID="Freemind_Link_238437160" MODIFIED="1247042285478" TEXT="「○○がある、どうする?」「選択肢1, 選択肢2」"/> +<node CREATED="1247042353928" ID="Freemind_Link_1703418638" MODIFIED="1247044589542" TEXT="マス目上に主人公・街・魔王・お姫様・イベントキャラ配置"/> +<node CREATED="1247043004082" ID="Freemind_Link_193895288" MODIFIED="1247043014981" TEXT="ステージ制?"/> +</node> +<node CREATED="1247044235688" ID="Freemind_Link_164077908" MODIFIED="1247044243595" TEXT="SaGaシリーズ"/> +</node> +<node CREATED="1247043020402" ID="Freemind_Link_1118650794" MODIFIED="1247043025781" POSITION="right" TEXT="雰囲気ゲーム"> +<node CREATED="1247043044667" ID="Freemind_Link_1599516314" MODIFIED="1247043048135" TEXT="夏休み"/> +<node CREATED="1247043048867" ID="Freemind_Link_755573527" MODIFIED="1247043056213" TEXT="牧場経営"/> +<node CREATED="1247043071895" ID="Freemind_Link_226651616" MODIFIED="1247043080092" TEXT="田舎の村人"/> +<node CREATED="1247043171655" ID="Freemind_Link_1795782981" MODIFIED="1247043216991" TEXT="無人島脱出"> +<node CREATED="1247043442160" ID="Freemind_Link_1831219756" MODIFIED="1247043449738" TEXT="食料確保"/> +<node CREATED="1247043451600" ID="Freemind_Link_149240742" MODIFIED="1247043479648" TEXT="船の材料"/> +<node CREATED="1247045073127" ID="Freemind_Link_366476690" MODIFIED="1247045080835" TEXT="マンパワーの分配"/> +</node> +</node> +<node CREATED="1247043836201" ID="Freemind_Link_466715769" MODIFIED="1247043841207" POSITION="right" TEXT="アクション"> +<node CREATED="1247043849307" ID="Freemind_Link_790595792" MODIFIED="1247044151904" TEXT="ファンタジー的FPS(TPSでも可)"> +<node CREATED="1247044061459" ID="Freemind_Link_1216856371" MODIFIED="1247044127824" TEXT="銃・戦車・飛行機->魔法・モンスター・ドラゴン"/> +</node> +</node> +<node CREATED="1247044531933" ID="Freemind_Link_1922926256" MODIFIED="1247044539076" POSITION="right" TEXT="アドベンチャー"> +<node CREATED="1247044540321" ID="Freemind_Link_1386257006" MODIFIED="1247044554725" TEXT="多人数参加型ノベルゲーム"> +<node CREATED="1247044617816" ID="Freemind_Link_424480413" MODIFIED="1247044737094" TEXT="お互いの選んだ選択肢によってNPCの行動が変化"/> +<node CREATED="1247044741091" ID="Freemind_Link_423454296" MODIFIED="1247044809560" TEXT="プレイヤー・NPCの人生(結末)も変わる"/> +<node CREATED="1247044822397" ID="Freemind_Link_568603427" MODIFIED="1247044868052" TEXT="NPCをけしかけて相手を殺す事も可?"/> +</node> +</node> +<node CREATED="1247044970042" ID="Freemind_Link_1089285915" MODIFIED="1247044981384" POSITION="right" TEXT="学習型"> +<node CREATED="1247044984220" ID="Freemind_Link_505996377" MODIFIED="1247045039936" TEXT="弾避け、ショットのタイミング等を覚えさせるシューティング"/> +<node CREATED="1247045143257" ID="Freemind_Link_391882224" MODIFIED="1247045165933" TEXT="簡単なステージをクリアさせるアクション"> +<node CREATED="1247045181312" ID="Freemind_Link_1077827517" MODIFIED="1247045195995" TEXT="ワンダープロジェクトJ"/> +</node> +</node> +</node> +</map>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/works/hash_test/TextureHash.cpp Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,53 @@ +#include <string.h> +#include <stdlib.h> +#include "TextureHash.h" + +static int id_count; + +TextureHash::TextureHash(void) +{ + table = (hashtable*)malloc(sizeof(hashtable)*TABLE_SIZE); + + for (int i = 0; i < TABLE_SIZE; i++) { + table[i].tx_id = -1; + table[i].key = NULL; + } +} + +TextureHash::~TextureHash(void) +{ + free(table); +} + +int +TextureHash::hash_function(const char *key) +{ + //float value = 0.0; + int value = 0; + + for (int i = 0; key[i]; i++) { + value += key[i]*(i+1)*17+1; + } + + return value%TABLE_SIZE; +} + +int +TextureHash::hash_regist(const char* key, int &id) +{ + int hash = hash_function(key); + + for (int i = 0; ; i++) { + if (table[hash].tx_id == -1) { + table[hash].key = (char*)key; + id = id_count++; + return 0; + + } else if (strcmp(key, table[hash].key) == 0 + && table[hash].tx_id != -1){ + id = table[hash].tx_id; + return 1; + } + hash = ((37*hash)^(11*i)) % TABLE_SIZE; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/works/hash_test/TextureHash.h Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,21 @@ +#ifndef INCLUDED_TEXTURE_HASH +#define INCLUDED_TEXTURE_HASH + +const int TABLE_SIZE = 8192; + +struct hashtable{ + int tx_id; + char* key; +}; + +class TextureHash { +public: + hashtable *table; + + TextureHash(void); + ~TextureHash(void); + int hash_function(const char* image_name); + int hash_regist(const char* image_name, int &tx_id); +}; + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/works/hash_test/TileHash.cpp Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,88 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include "TileHash.h" + +static unsigned short PRIME[8] = { + 0x002, 0x065, 0x0c7, 0x133, 0x191, 0x1f3, 0x259, 0x2bd, +}; + +int +TileHash::hash(uint32 data) +{ + int value = 0; + int n = 0; + int key; + + for (int i = 0; i < 8; i ++) { + key = data & 0xf; + value += key * PRIME[n++]; + data >>= 4; + } + + return value % hashSize; +} + +TileHash::TileHash(void) +{ + //hashSize = 263; + //tableSize = sizeof(TilePtr)*hashSize; + + table = (TilePtr*)malloc(tableSize); + clear(); +} + +int +TileHash::put(uint32 *key, TilePtr data) +{ + int hashval = hash((uint32)key); + + for (int i = 0; i < hashSize/2; i++) { + int index = (hashval + i*i)%hashSize; + + if (table[index] == 0) { // 空の table に入れる + table[index] = data; + return index; + } + } + + return -1; +} + +TilePtr +TileHash::get(uint32 *key) +{ + int hashval = hash((uint32)key); + + for (int i = 0; i < hashSize/2; i++) { + int index = (hashval + i*i)%hashSize; + + if (table[index] != NULL && + table[index]->texture_addr == key) { + return table[index]; + } + } + + return NULL; +} + +void +TileHash::remove(uint32 *key) +{ + int hashval = hash((uint32)key); + + for (int i = 0; i < hashSize/2; i++) { + int index = (hashval + i*i)%hashSize; + + if (table[index] != NULL && + table[index]->texture_addr == key) { + table[index] = NULL; + } + } +} + +void +TileHash::clear(void) +{ + bzero(table, tableSize); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/works/hash_test/TileHash.h Wed Oct 28 20:12:40 2009 +0900 @@ -0,0 +1,30 @@ +#ifndef INCLUDED_TEXTURE_HASH +#define INCLUDED_TEXTURE_HASH + +#ifndef INCLUDED_TAPESTRY +# include "Tapestry.h" +#endif + +class TileHash { +public: + TileHash(void); + +private: + TilePtr *table; + +public: + void clear(void); + int hash(uint32 data); + int put(uint32 *addr, TilePtr tile); + TilePtr get(uint32 *addr); + void remove(uint32 *addr); +}; + +typedef TileHash* TileHashPtr; + +#endif + +const int hashSize = 263; +const int tableSize = sizeof(TilePtr)*hashSize; + +