2004.1.5
■ルーマニア#203
permalink:"200401.html#d05_t1"
PS2用ゲーム、ルーマニア#203の説明と感想。DCからの移植版かな。
- ロロ「
- 1Kのマンション、203号室に住んでる大学生の男の生活をドラマチックにするのが目的です」
基本文法はアドベンチャーゲームだな。
自分は#203を覗いてる神。いくつかの視点から#203をながめたり、男が何をしたいかがある程度わかるが、プレイヤーができることは部屋中に散らばったオブジェクトをクリックすることだけ。
留守の時はクリックによって日記の覗き見やいたずらができることがある。パソコンの電源を入れたり、机を動かしたり。ショボ! 神というより座敷わらしみたい。
在宅時はクリックによって男の注意をひく。男はほっといてもテレビ見たりパソコンでチャットしたり留守電確認してゼロ件だったり鼻歌歌ったり屁こいたり適当に生活してるが、さらにクリックにより優先順位が微妙に上下する。蛇口をクリックしたら何となく水が飲みたくなったりする。
- ロロ「
- 日記の盗み見や部屋にいたずらをしたりできますが、ストーカーゲームではありません。なぜなら、自分というものが希薄だからです。大学生が主人公のゲームということにしても全然問題ないでしょう。一応、神という設定はあるのですが、これは操作を不自由にするための理由付けとみるべきでしょう」
このゲーム操作だけとったらすごい不自由でクソゲーぽい。時間制限はあるし、何回もクリックしないと反応してくれないし、何をするにも間接的にしか行動させられない。
これで部屋中のものを手当たり次第にクリックしなきゃいけないゲームだったとしたら、もおダメゲーの烙印を押すとこなのだが、ちゃんとヒント(進めるべき未来)が出てくるので、それを見て考え、どのオブジェクトに重点を置いてクリックするかを決め、その結果起こる人間模様を眺めるところが醍醐味だろうか。
- ロロ「
- 『自由度の高いゲーム』は実は、駄目ゲームと紙一重なのです。多くの製作者は、選択肢の自由度に見合うだけの結果の自由度を提供できないからです。一本道かどうか、それは問題ではない から引用します」
「さて、君たちは宇宙港に到着したぞ。どうする?」というわけだ。なんと宇宙港に到着した途端、なんでもできるぞ。でもプレイヤー達はうろたえるばかりだ。つまり「何をしていいのか分からない」のだ。
- ロロ「
- 逆に、このゲームでは、操作が不自由なことが結果のダイナミズムを強調しています」
チラシとかをクリックしただけなのに劇的に未来が変わっていくからな。これがもし、『チラシを見る』とかの選択肢を選ぶだけだったとしたら全然普通のAVGと感じただろう。
強調されたぶん、地味なイベントを面白く見せることに成功している。もともとマンションの一室という一人芝居のような舞台設定なので、あんまり地に足がついてないイベントは向かないのだ。地球を救うとか。
地に足がついてるので、共感を呼びやすい。エンディングについては、まだバッド以外のエンディングを迎えてないので何ともいえないけど。
だめな点は操作が不自由なので冗長になっていること。2回目のプレイは苦痛かもしれない。シナリオに関係ないクリックの結果が面白くないこと。テレビを見たりラジオを聞いたりしてくれるのだが、一回モーションを見れば飽きる。時々変な独り言を言ったり、鼻歌を歌ったりするのは面白いのだけど、それはほっといても起こるのでクリックのありがたみがない。パッケージがものすごくつまらなそうなこと。
2004.1.7
■近況
permalink:"200401.html#d07_t1"
たまに帰宅ついでにウォーキングしてるんだがたまには違う道を通ろうと思ったところ思い切り郊外に出てしまいひたすら歩く羽目になった。四つの市を渡り歩き三時間後市内にたどり着いたもののもう歩く気力が無いのでバスに乗ったが今回ばかりはさすがに寒くてこごえるかと思った。
なんだかこの時期長休みのように見えてつぶれてる店がちらほらしてるような予感。
七草粥をいただいた。関係ないが七草をモチーフにしたギャルゲとかありましたっけ。芹菜・なずな・鈴菜とかはよいがハコベとかどうしたものやら。いや作りませんが。
そうだ…Chickweed という名前の外国人にすれば…いや作りませんが
■愛情値が14ポイント上がった
permalink:"200401.html#d07_t2"
- ロロ「
- 『友愛値が3ポイント下がった』とか、『親愛度が27ポイント上昇した』なんてテキストが表示されるということは、感情の表現とみなしていいものか、どうでしょうか」
サクラ大戦のぴんぴろりろりんのことだな。俺は断然『感情表現なんて上等なものではない』派ですが。
- ロロ「
- 私もそうなのですが、『立派な感情表現である』派へのよい反論が見つからないんですよ」
だってさあ、返事やしぐさの描写の代わりが全部そんな『愛情が10ポイント上がった』で書いてある恋愛小説を読みたいと思う?
- ロロ「
- どうしようもなく稚拙ですが、一応感情の機微は読者に情報として伝わりますよ」
うーん。
2004.1.14
■目標
permalink:"200401.html#d14_t1"
風邪ひいた。熱があるのか、妙にぽやんとしている。
仕事を休んだ。
『エヴァンゲリオン2』があまりにも期待外れだったので、始めた『キングスフィールド3』でこれ以上話を進めるとミーナが死んじゃうことがわかったショックで、数年ぶりに再開した『リンダキューブアゲイン』で半分寝ながらネズミ♀の腹を裂いていたら、熱が出てきて
3D迷路が作りたいなあ。平面じゃなくて上とか下にも行けるやつ。カメラ的にはトゥームレイダーの水中。
と思った。
- ロロ「
- ぐりぐりですか」
ぐりぐりです。
- ロロ「
- DirectXを使って?」
前DirectX8いじってたことあったんだけど、2年前のことなんでもうやり方完全に忘れた。
■ゼロからはじめる3Dプログラミング
permalink:"200401.html#d14_t2"
- ロロ「
- というわけで、今日から3Dプログラミングをしますよ。まず、自分の作ったプログラムを見直して下さい」
なんか色々やってるみたいなんですが、まったく意図がわかりません。
- ロロ「
- 先に自分のお気に入りを見直した方がいいのかも知れませんね」
まずひとつめ。美咲時間 内
PC-H:報告No.04 Borland C++ Builder(Compiler)で3Dプログラミング
あとほかにも基礎的なページをいくつか回らないと。座標変換にグーロシェーディングにテクスチャマッピングに、
倍リニア
■ゼロか じめ 3 ロ ミング
permalink:"200401.html#d14_t3"
- ロロ「
- …もしもーし。1時間くらい止まってますよ」
…薬が効いてきて全然ものが考えられません。ベクトルの講義からお願いします。
- ロロ「
- しょうがないですね。確認しながらやってくしかありませんね」
■ベクトル
permalink:"200401.html#d14_t4"
スカラーは1次元の値。ベクトルは多次元の値。
a = (ax, ay)みたいの。ベクトルの成分表示。3次元だと、a = (ax, ay, az) こんな感じ。
- ロロ「
- この調子で何次元のベクトルでも作れますが、3Dなので3Dしか使いません」
class POINT3D {
public:
float x;
float y;
float z;
};
長さを求める式は、sqrt(x*x + y*y + z*z) のような形。
float POINT3D::Length() {
return sqrt( x*x + y*y + z*z );
}
ベクトルの成分を長さで割ると、長さ1で向きは元のベクトルと同じ、という単位ベクトルになる。
POINT3D POINT3D::Normalize() {
float len = Length();
POINT3D n( x/len, y/len, z/len );
return n;
}
えーと。コレローカル変数なPOINT3Dオブジェクトを渡してますが、これは大丈夫なんでしたっけ。
- ロロ「
- 値渡しでオブジェクトごとコピーされるから大丈夫ですよ。その分のオーバーヘッドはありますけど」
ああそうかそうか。思い出してきた。いや本当に。
ベクトル同士の足し算、引き算は要素ごとに足し引きするだけ。なんだけど、オペレータの書き方忘れた。猫見よう猫。
POINT3D POINT3D::operator +(const POINT3D& dest) const {
POINT3D sum( x+dest.x, y+dest.y, z+dest.z );
return sum;
}
POINT3D POINT3D::operator -(const POINT3D& dest) const {
POINT3D sub( x-dest.x, y-dest.y, z-dest.z );
return sub;
}
- ロロ「
- 後ろのconstがどこにかかってるかわかりますか?」
え。うわ。DirectX SDKヘッダファイルからコピーしたのばれた?
すいませんすいません、わかりません。なんだろうこのconst。
- ロロ「
- このconst修飾子はメンバ関数そのものにかかりますね。constメンバ関数です。このメンバ関数を呼び出したときにオブジェクトの内容が変化しないことを宣言しています(参考にしたページ:const修飾子)」
書いたテストプログラムの全体:vectortest.cpp
このへんは、ほぼコーディングできるレベルでわかってることがわかったので、先に進む。
- ロロ「
- お願いですから3D計算だけでなく、C++も思い出してくださいね」
■内積
permalink:"200401.html#d14_t5"
さあ、いきなり忘れてるぞ。まず内積なんて単語IMEに入ってなかったぞ。
- ロロ「
- 内積の定義は以下の通りです」
a=(ax,ay,az)
b=(bx,by,bz)
θ=a,b 2つのベクトルのなす角度としたとき、
aとbの内積 a・bは、
a・b = |a||b|cosθ
- ロロ「
- |a|と|b|、cosθはいずれもスカラーですから内積a・bもスカラーになります」
- ロロ「
- ベクトルの成分だけで計算をするとこうなります」
float POINT3D::DotProduct(const POINT3D& dest) const {
return ( x * dest.x + y * dest.y + z * dest.z );
}
成分で計算するとなんでコサインとかが出てこなくなるんでしたっけ。
はるか昔に証明した気がするけど。
2004.1.24
■[game]ワールド・ネバーランド 〜オルルド王国物語〜
permalink:"200401.html#d24_t1"
MMORPG(大規模オンラインロールプレイングゲーム)は、何人もの人がいっせいに同じ世界の中で冒険とか色々するゲームである。
細かい説明は省くが、たいていの場合は、一人一人のユーザーが、色々な職業や人種のキャラクターをつくり、互いにコミュニケーションをとりつつ、協調したり競争したりしながら、戦闘したり、訓練したり、物を作ったり、売り買いしたり、する。
ここまでなら、オンラインゲームは思い描いていた理想のすばらしいゲームのままである。
MMORPGを運営しようと思ったら、たいてい、頑強で線の太いサーバーが必要になる。パッケージを売ってさようなら、というわけにはいかない。サーバーをずっと管理し、ゲームをメンテしつづけなければいけない。
金がかかる。そこで、ユーザーから『課金』をとることになる。課金がたくさんもらえるようにするには、できるだけ長い間、飽きずにやめずにプレイしてもらわなければいけない。
結果、ゲームは薄くひきのばされる。いくらがんばっても、満たされなくなる。まるで現実のような苦行に近いものになる。それでいて、ユーザーがやめてしまうようではいけないので、射幸心を煽る設定をどんどん追加してゆく。ユーザーは自分がやめている間にいい事が起きてやしないかと気になってしょうがなくなる。一日に10時間以上プレイしないと世界に置いていかれてしまうような幻想に陥る。雑誌記事が拍車をかける。ライターは遊ぶのが仕事なので、じゅうぶん時間をかけられるのであるが、読者も時間をかけるべきだと思い込んでしまう。
それだけの時間を割けない人々は、効率よいプレイを追い求める。多少今の苦労を犠牲にしても、追いつけ追い越せで物事を追いかける。効率の良い作業には人がむらがる。むらがる自分以外のキャラクターは、すべて邪魔者である。回線に負担をかける上、何らかの資源を奪い合うことになるからだ。戦闘が可能なRPGなら襲い掛かってくるかもしれない。あるいは、コミュニケーション機能を使って、罵り合いが起こる。
- ロロ「
- モモの時間どろぼうを思い出しますね」
(『モモ―時間どろぼうとぬすまれた時間を人間にかえしてくれた女の子のふしぎな物語』【 bk1 / amazon / Yahoo! / 旭屋 / Jbook / 紀伊國屋 / 楽天 / skysoft 】)
結果、MMORPGの中には、不愉快で協調性のないキャラクターたちが大勢ひしめきあうようになってしまった。
で、やっと、本題。
ワールド・ネバーランド〜オルルド王国物語〜は、架空世界の中で生活をするシミュレーションです。
このゲームはオフラインであるがゆえにみんなが親切で面白いです。
でも、このシリーズの最新作は携帯でのオンラインゲームなんだよな…
遅くなったので続きは明日にします。
2004.1.26
■もう2:30
permalink:"200401.html#d26_t1"
明日書くっつったのにもうこんな時間だ。
あ、携帯でできるワーネバは、ちゃんと考えてあって単純なオンラインゲームにはなってないみたい。住民を直接操作するんじゃなくって一つ段階を置いてあるのね。だからログインしてなくても生活は進んで勝手に結婚したり子供産んだりするみたいで、ちょっと楽しいかも。