BallTrip(仮称)を改良中


STATUS: 故障中x2


 先日、日記に載せた「BallTrip(仮称)」をいろいろ改良中です。


 初期バージョンは、ボールは線に完全弾性で跳ねていたのですが、スーパーボールのようで風情がないので、鉛直方向の反射率を60%におとしてみました。
 そうすると、坂を作るといい感じにコロコロ転がるようになったのですが、今度は線をすり抜けて落ちてしまうという現象が。
 これは、ボールの跳躍がおちついてくると、だんだん線との距離が縮まってゆき最後には0になってしまうためです。そうなると、ボールは線と同じY座標にあることになり、線の上にあるのか下にあるのか判別できなくなってりまっていました。
 これを解決するために、ボールの半径分だけ線から離してみたら今度はいつまでたっても振動して落ち着かなくなったりといろいろ苦労しました。(この辺)


 が、どうにかうまいことボールの挙動が安定するようになりました。
 それがこれです↓


http://www.dokokano.com/ftlabo/applet/BallTrip/test4/


 テストプログラムなのでゲームにはなっていませんが、次の要素を追加してあります。
・ボールの跳躍時に徐々に勢いが弱くなる
・画面の下4/1のエリアでは右方向に加速される
・(エネルギーは無制限)
・フレームレートを30fps固定にした
・スペースキーでフリッパーを設置できる(これでボールを弾けます)


 フリッパーは、ピンボールでボールをはじくアレみたいなものです。
 いままでのバージョンでは、ボールの移動時に線との交差を判定していたのですが、線が動く場合はすり抜けてしまっていました。
 今回のバージョンから線が移動した場合もボールとの当たり判定を持たせることが出来るようにしましたので、上記のようにフリッパーのようなものも実現できました。
 これで複雑な当たり判定を駆使したゲームを作るための要素がそろいました(いままでこの手のコリジョン苦手だった)。
 いっぱいゲームつくっていきますよ。


 まず手始めに・・・PONGでも作るか!(ぉ

Processingの本が出版されました

STATUS: 故障中x2


 Processingって、JAVAをベースにした言語というか開発環境で、メディアアートやってるひとを中心に使われているようです。ゲームを作るにも便利なので、僕もよくつかってます(→この辺)。
 作ったプログラムを元に簡単にAppletを作れるので、Webで公開するのも楽チンだし。
 で、他のユーザーの日記で知ったのですが、Processingの入門書が出ているみたいですね。


 デザイン/アートのためのプログラミング入門


■内容
Processing(プロセッシング)とは、デザイン・アート作品制作に特化した、オープンソースプログラミング言語/開発環境です。
インタラクティブな作品制作に取り組むWebデザイナーやクリエイター、精美なビジュアルアートを描き出そうとしているアーティストたちに、世界中で広く使われています。
プログラミング言語や開発環境というと、難しいように思われますが、Processingは、もともと教育用に作られているため、初心者でも数分の説明を受けた後には、独自のプログラムを書き、グラフィックをつくることが可能です。
本書では、まず静止画を描くプログラムをレッスンし、その後に動的な作品をWeb上に公開することを丁寧に解説します。
また、作品例や、取り巻く環境、コミュニティー、歴史なども紹介します。


 これで、Processingのユーザーが増えるといいですね。
 ただ、いまはWebブラウザで動かすゲームとなると、Java AppletよりもFlashのほうが圧倒的に多いですねぇ。
 これというのも、Java2以降の仕様でAppletを作ると、Internet Explorerでは別途プラグインのダウンロード&インストールが必要になるからかもしれません。
 いまは、「Java ソフトウェアの無料ダウンロード」サイトで、簡単にインストールできるようになってはいるのですが、Flashに比べると敷居が高そうにみててしまうのかな。
 未インストールの場合、ダイアログが出て「はい」を押したらそのままインストールされるくらいにしてほしいものです。
 一番いいのはWindowsに最初から入っていることですが、そうは行かないんですよねぇ。


※ 現バージョンのProcessingで、Java1.1準拠でコードが出力できれば、まあ、それもそれなのですが。
※ ちなみに、Processingを「Proce55ing」と表記するのは、「Processing」のままだと検索するとき候補が多すぎてみつからなくなっちゃうから。普通名詞をそのまま製品名に使うのはかんがえものだょ

椅子取りゲームシミュレーション

椅子取りゲームシミュレーション


STATUS: 故障中x2


 はてなで、こんな質問を見かけました。

100人でイス取りゲームをやったとして、実際問題として全員が座るには、イスが何脚必要なのかを求めるロジックを教えて下さい。

 うーん、じゃあシミュレーションプログラムを作って検証してみよう!


【実行できるページ】

椅子取りシミュレーション
http://dokokano.com/ftlabo/applet/isutori/


【これは何?】
 椅子取りゲームのシミュレーションです。
 プレイヤーや椅子の数を変えた状態での椅子が埋まるまでの時間を計測できます。


スクリーンショット

(歩いている状態)

(着席!…ひとりあぶれてます)

(大人数でのシミュレーションも出来ます)


http://youtube.com/watch?v=R5DAXOlEV4I
デモムービー (Youtube)


【画面のみかた】
・椅子
 円形に並んでいる緑色の四角が椅子です。
・プレイヤー
 椅子の周りをぐるぐる回っているのがプレイヤーです。
 あなたの号令で椅子に座ろうとします。
 椅子に座り損ねると赤くなります。
・号令
 画面中央に「WALK」「SIT DOWN」と表示されているのが、あなたの号令です。
 画面をクリックすると切り替わります。
 「SIT DOWN」にするとプレイヤーはいっせいに開いている椅子に座ろうとします。
 号令の下には、椅子が埋まるまでの時間がカウントアップされます。(単位は特に決めてませんが、1カウントあたり1/10秒程度と考えてください)
・プレイヤー数/椅子数
 画面下の左右にプレイヤー(Player)と椅子(Chair)の数が表示されます。

【操作方法】
・「WALK」「SIT DOWN」号令
 画面をクリックすると、「WALK」「SIT DOWN」が切り替わります。
 「WALK」→椅子の周りを歩きます。
 「SIT DOWN」→椅子に座ろうとします。
・プレイヤー数変更
 「Player」の横の [+][-] で加減できます。
・椅子数変更
 「Chair」の横の [+][-] で加減できます。
・プレイヤー/椅子数一括変更
 キーボードの[0]〜[9]で、×10倍の数に変更できます。
 「Player」の横の [+][-] で加減できます。
・プレイヤー番号表示
 プレイヤーの歩いているあたりの円周にカーソルをあわせると、プレイヤーの番号が表示されます

【シミュレーション】
 各プレイヤーの歩行速度は、-10%〜+10%の幅があります。
 椅子に座るまでの時間は椅子までの距離によりますが、近くの椅子にだれも座っていない場合、1〜13カウントで着席できます。
 プレイヤー同士の衝突は考慮していません(すりぬける)。
 プレイヤーは一番近い空席を目指して移動します。その席を狙っているプレイヤーがより近くにいても考慮していません。
 空席判定が手抜きなので、最悪値で(椅子数×プレイヤー数×プレイヤー数)の判定処理を行っています。椅子、プレイヤー数がそれぞれ100の場合、号令直後は毎回100万回の判定をしているのですが、けっこうなんとかなってしまうの今のPCはすごいですね〜(トカイウ)。
 これをベースに椅子取りゲームって作れないかなあ。



 プレイヤーが100人の場合、全員着席できるまでの時間を計りました(単位はカウント)。椅子取りゲームの際参考にしてください。


席数 時間(1/10秒) :平均値 中間値
100 : 1559,878,1552,1110,1482 : 1316 (1482)
110 : 513,1188,546,709,1166 : 824 ( 709)
120 : 714,615,856,1072,638 : 779 ( 714)
150 : 410,159,670,206,132 : 315 ( 206)
200 : 96,241,168,112,140 : 151 ( 140)
300 : 76,64,10,128,56 : 67 ( 64)
400 : 56,51,90,98,43 : 68 ( 56)
500 : 39,49,56,59,63 : 53 ( 56)




【ゲーム画面が映らない場合は・・・】
 というか、JDK1.3のAppletなのでたいていの環境では動かないはず・・・
 ↓のサイトから、Java ソフトウェア(JRE)をダウンロードしてインストールしてください。
 
Java ソフトウェアの無料ダウンロード

ゲームつくりました→「Amoeba#1」

amoeba#1


STATUS: 故障中x2


 先日のSDLオフでひさびさにproce55ingでゲーム作りました(って、SDLじゃないし・・・)。


 ブラウザで動くミニゲームなのでやってみてね。


Amoeba#1 (画面写真)



(要JRE1.3以降。ココからダウンロードしてインストールしてください。)


【ゲームルール】
 エサをとってどんどん巨大化しよう!
 タイトル画面で「Click HERE to start」という枠をクリックするとゲームスタート。


 マウスカーソル位置にある●(赤色→緑色を繰り返す)が、アメーバのコアです。
 上から流れてくるエサ(緑や黄色の○)に触れると、コアにくっつきます。たくさんエサをとって成長しまっしょう。
 ただし、エサをとって成長した部分は、同じ色のエサしか取れません。
 違う色のエサをとってしまうか、エサが下まで流れてしまうとゲームオーバーです。


 先のことを考えて戦略的にエサをとっていきましょう。
 触手をはやしまくるか、小さくまとめるか頭の使いどころです。そして慎重な操作も重要。
 サイズ50くらいまではなんとかなりますがサイズ100はかなり至難の業。健闘を祈ります。



 今回はProcessing Beta124で作りましたが、JREのインストールが必要になってしまってまいりました。なんとかならないのかなー。
 昔作った習作は、このへんを
 こっちはAlpha068の頃作ったのでそのまま動きます。

SDL 2007年新春オフに参加します / Procerssingでゲーム製作中

fslasht2007-02-11


STATUS: 故障中


 今日は、SDL 2007年新春オフです。
 自作ゲームを持ち寄って発表したりしなかったりするオフです。僕は1年ぶりの参加です。
 今回の会場は、四谷地域センターでプロジェクターなどの設備も完備だそうです。
 参加人数は、22人だそうで凄い大所帯だ〜


 今回発表するソフトは、proce55ingで作りました(え?SDLじゃないのー?)。
 昨晩から4時間くらいでミニゲーム作ったです。


 2年ぶりに使ったので、いろいろ忘れててリファレンスみながら組んでいきました。
 以前使ってたころは、ALPHA-0068だったのですが、いまは、BETA-0124になっててライブラリの仕様などいろいろ変わってますよ〜


● processing変更点
(processing-0068 → processing-0124の違い)


・プロジェクト保存ディレクト
 以前は、Processingをインストールしたフォルダの下の階層だったけど、「
C:\Documents and Settings\<ユーザー名>\My Documents\Processing」になった。


・メインループメソッド名の変更
メインループは、Loop()じゃなくて、Draw()に書くようになったらしい。
void loop() → void draw()
最初、実行してもなにも起きなくて焦った。


・フォントクラス
クラス名が変更になった。使い方は同じ。
Bfontクラス → PFont


・一部メソッド、定数が変更になってる
ellipseMode(CENTER_DIAMETER); → ellipseMode(CENTER);
textMode(ALIGN_CENTER); → textAlign(CENTER);


フレームバッファ操作が変わった
pixelsを操作する前後に、 loadPixels();および updatePixels();が必要になった。
そうじゃないと、ぬるぽ例外派生する。
pixels
に渡すデータ形式がかわった。24bit整数値を設定しても意図どおりにならない…color型の値をセットしたら上手くいった。

Typhoon 1800 ベンチ結果

STATUS: 故障中

 ベンチマークにご協力頂きまして有り難うございました。

Typhoon 1800 bench mark (applet)
http://www.dokokano.com/ftlabo/applet/P5Demos/?pgname=Typhoon1800

name     CPU        clock OS    VM  FPS FPS/GHz memo
-------- ---------- ----- ----- --- --- ------- ----
fslasht  Pentium4   3.06G Win2k SUN  60    19.6 自作Desktop
fslasht  Pentium4   1.70G Win2k SUN  42    24.7 自作Desktop
NyaNya   Celeron    0.70G Win98      15    21.4 NotePC
Katuragi PowerPC G4 0.55G             5     9.1 PowerBookG4/550/ATI RageM6
Katuragi Pentium4   2.80G Win2k      98    35.0 ThinkCentre S50(IBM)
KUSANAGI Pentium4   2.40G WinXP SUN  50    20.8 自作Desktop
KUSANAGI Efficion   1.00G WinXP SUN  32    32.0 MURAMASA (Efficeon TM8600)
KUSANAGI PentiumIII 0.87G Win2k SUN  28    32.1 DELL Latitude C400 (Clock666MHz)
naruse   PentiumM   1.00G WinXP SUN  33    33.0 Lavie
pascal   Pentium4   2.80G            65    23.3
光岡(略 AthlonXP   3.20G            70    21.9

 集計結果はこんな感じになりました(敬称略)。
 FPS/GHzは、クロック辺りのFPSです。(Athronモデルナンバーで計算しました)

 katuragiさんのThinkCentre S50(IBM)が前回に引き続きトップです。さすがIBMといったところでしょうか。
 ThinkCentreはなんか別格ですが、Pentium4系はクロックあたりの性能が低いというのはベンチ結果にあらわれてますね。
 とはいえ、AppletがCPU能力を全て使い切っているかよくわからないで、あんまりあてにはならないベンチマークなので参考までに。

コメント