まこととりあえず今までやってきたことを...。cvs内でのファイル・ディレクトリ操作こちら?と同じなので割愛します。補足(PS2班は実際にPS2にログインして実験するためそのコマンドである。)611においてあるPS2(名前はpstwo1とvikingsである)にログインする。root(勝手に書き直したbyj02014)作業用ディレクトリを作成。y02ディレクトリy02のグループ権限ををy02に変更する。(たぶん、こんな感じでした。kamiya..)パスワード設定を行う。(自分で作ったアカウント名)注)ここでpasswdだけでリターンキーを押すとスーパーユーザーのpassword変更となるので必ず自分のアカウントを最後に記述すること!!ここまですんだら、いったんログアウトして再びPS2に入ってみる。(自分のアカウント)で入れればOKです。今までのゲーム班が作ったプログラムソースを参考にして、自分たちで作った3Dオブジェクト(複数)を表示し、コントローラーを使って実機で動かしてみる。(下の写真が表示されたオブジェクト)リスト構造やポインタなどを参考にして、双方向リストプログラムを作成し、それを組み合わせて表示されたオブジェクトの個数がコントローラーのボタンを押すことによって増えたり減ったりするプログラムを作成。オブジェクトが増えた後の状態。この段階においてのプログラムソースは以下の通り。(1枚目の写真)リスト構造を用いて、1つのオブジェクトを増やしたり減らしたりするプログラム。問題点あるオブジェクトを表示して、個数を増やしたり減らしたりするときに、「1個ずつ」という個数単位ではできず、ボタンが押された時間によって増えていく。思いつき次第追加していこうと考えております。PS2班のみんなも思いついたら追加して下さい。P.SPS2班のみんなへ。これを読んでなおしたい箇所があれば、勝手に直してかまいませんので。j02015:神谷貴史Makefileの作成の仕方を書きたいと思います。$(OBJS)※makeに必要な[*.o]ファイルを書く。この場合は上のOBJSで書いたので$(OBJS)でもいい。cleanコマンドラインから打ち込むとmake時にできた不要なファイルを消す事ができる。全体的に分かりやすくないかも。1段階進む"tはオブジェクトを移動させる事ができる.yはオブジェクトを回転させる事ができる.xはオブジェクトを消去する。まこと611にある通信システム「Linda」について。コマンドを用いて読み書きすることによって通信を行うシステムである。これを図式化すると以下のようになる。↑まぁ、こんな感じです。読み込み2.送信3.Commandキューと同時にREPLYキューを作る4.Commandキューにデータを溜める。5.psx_sync_n()を実行する。6.シーケンス番号(Tuple内)を調査し、その番号にデータがあれば、psx_replyコマンドで出力。このLindaは、タプル送受信のAPI(out,in,rdなど)を用いることで実行できる。タプルはCOMMANDキューに溜められていき、プログラマが指定したタイミング(psx_sync_n()実行時)で、一気にサーバに送信されます。APIを実行した段階ですぐに通信が始まるわけではないのである。サーバからのタプルの受信もpsx_sync_n()を実行したときに行われる。受信したタプルはREPLYキューに蓄えられ、psx_reply()で取り出します。コールバックを用いて受信したときのアクションを登録することができます。このコールバックを用いると、psx_sync_n()を使わずに送受信も可能になる。Lindaの主なAPIは以下の通りです。psx_sync_n();COMMANDキューに溜められたコマンドとデータをサーバへ送信する。サーバからデータを取得し、REPLYキューへ溜める。byteのデータを書き込むコマンド。返り値は、このコマンドのsequence番号です。id);指定したID番号のタプルから、データを読み込むコマンド。このコマンドを使用した場合、サーバー上に存在するタプルは、クライアントがデータを読み込んだ後削除される。返り値として、sequence番号を取得する。id);指定したID番号のタプルから、データを読み込むコマンド。クライアントがデータを読み込んだ後も残る。返り値として、sequence番号を取得する。上記赤でかかれた場所がpsx_in()とpsx_rd()のもっとも大きな違いである。id);基本的にpsx_rd()と同じであるが、サーバのタプルスペースにデータがあってもすぐには読みこまず、次にデータが書き込まれるまで待つ。データが書き込まれたときのみそのデータを読みこみ、クライアントへ送信する。返り値として、sequence番号を取得する。上記のpsx_wait_rd()を図にすると以下のようになります。上はpsx_out関数が実行された場合を示し、下は、psx_out()関数が実行されていない場合を示している。この図からわかるように、psx_outが実行されるまで、データを格納しながら待ち続けるのである。REPLYキューからデータを取り出すときに使用。要求したデータがREPLYキューにある場合、データが格納されているTUPLEへのポインタを返す。psx_replyによって返されたポインタの先には、先頭にそのTUPLEのヘッダ情報が12bytes格納されていて、その後にデータそのものが格納されている。詳しくはこちらをみるとわかると思います...。Lindaは非同期であること、これが最重要である。アルゴリズムについて書いていきます。描画用の巡回アルゴリズムです。等には対応していません。効率の悪いプログラムです。PS2では1/60(sec)で画像書き換えを行っているらしいので、この様に効率の悪いプログラムを使うのは許されないのだが、今の実力ではこれで精一杯です。KaniyaBlenderのショートカットキー一覧をつくってみました。Sakugawa2つのPS2を用い、片方のPS2でコントローラを使ってオブジェクトを操作すると、もう片方で反映するプログラムを作成した。ソースは以下の通りである。コメント文が非常に少なく、わかりにくいプログラムでありますが、ご了承下さい。create.cオブジェクトの生成が記述されているソース。game_main.cLindaを使用しての動作を記述(ここではcallbackを使用)。main.cmain部分。PadCheck.cコントローラーを操作したときの動きを記述。あと、上記に記したソースに対応するヘッダファイルがいくつかありますので、それも加えて載せておきます。座標変換についての基本的考え元となるノードの(xyz)や(angle)が変化すると、それに連動するノードの(xyz)や(angle)も変化する。変化するときは、初期の(xyz)や(angle)に対して、transfer-matrixを変化させる。(1)を実行するためにRenewを忘れないようにする。まこと5/31にやったことを......最終的にどんなゲームを作成していくか?とりあえずPS2Linux班の3人で話し合った結果、「迷路ゲーム」なるものを作ろうかと考え中。内容は...(企画用紙が手元にないため、後日(なるべく早く)載せます。)(迷路ゲームかぁ...)(頑張らなくっちゃ)テクスチャ張りについて作成する内容を考えると同時に、オブジェクトにテクスチャを貼るテストを同時に行った。一応、貼れることは貼れるのだが、いくつか問題点が生じた。xmlファイルにテクスチャの情報が入っているかor入っていないかで貼れるor貼れないが決まってしまう。貼れたとしても、うまく写らず青黒くなる。(あれはあれでいいのかな?)テクスチャを貼るときには、PS2にある関数をうまく使うことで、解決する?(あとは担当さんよろしくお願いします。)(写真は後日載せます。)Lindaの実装状況と今後の課題Lindaの実装状況としては、人間と何かあるオブジェクトを同時に表示させ動かすことまではできた。(写真は後日で...。malloc()でデータを放り込み、変更されたオブジェクトを描画する。(ある程度はできてるかな?あとは細かい設定。)変更された座標のオブジェクトを正確にするため、構造体をいじり、オブジェクトに番号を振ってわかりやすくする。(↑構造体、mallocを使った、資料用のテストプログラムを作成。)上記を参照にしてプログラムを書き換え、人と人がコントローラーでうまく動かせるようにする。Sakugawa6/7(月)のMeeting内容は「どのようなゲームを作成していくか?」でした。他人が見て(企画書等)、面白みがあるということ。他人が見て、斬新さを持っていること(後は思いつき次第)が挙げられる。その中で、いいアイディアが思いつき、それを「シナリオ化」するまでに至らなければ、ゲーム企画書は作れない。それ相応のセンスが問われるのである。来週までにしてくること自分たちが作れるゲームとして、案を20ほど(数字はあくまでも目安)作成してくる。(もちろん、今までの作業も並行にしながら)。これができなければ、前のゲーム班が作った「しゅがーきゅーぶ」を作っていく。あとは適当に付け加えてくださいね。まこと我々、PS2Linux班は、「自分たちのゲームをつくる(飛び込み。水泳の)」or「しゅがーきゅーぶの引き継ぎ」というどちらかに対して、自分たちのプログラム力量などを考慮した結果、しゅがーきゅーぶを引き継ぐことに決定した。それあたって、今後はソースの読み合わせ及び移植までの段階をふまえ、オープンキャンパスまでに間に合わせるように作成していく。移植作業に進路が変わってしまった。途中で終了する形になってしまう。今までの努力が無駄になり勿体ない。↓なので......移植作業と並行して仕上げ、最初の目標を少しでも達成し、後期のゲーム班に役立てるようにする。スタック(sp)を用意した。