誰が為の警鐘【Blog】

━━ the Cruel World ━━

Rogue

3周年企画達成

ブログネタ
ゲームあれこれ に参加中!
877b3f8d.jpg最果て保存縛り進捗の続き。

ブログ3周年企画、最果て保存縛り。無事クリアいたしました!
後半はギガヘッド、メガタウロス、ドガガーン、サソリ、象さん、ダイレップウと裏白に負けず凶悪なモンスターぞろい・・・。クォータ、封印、鈍足の杖をフル活用しつつ状況によっては分身、ゾワゾワ、バクスイを惜しまず使用していった。対策アイテムが少ない分、手数を間違うとあっという間に詰んでしまう可能性があったため、深層の緊張感はなかなかのものでした。

何はともあれ、達成できて良かった。調子乗って宣言してしまった手前(笑

<クリア記録>

コシアン Lv80  スコア 657016
鬼の楽園  5時間55分39秒
最果てへの道クリア!
最大HP 455  最大満腹度 200%
ちから 25/25  経験値 2463787
ドラゴンキラー+19 金ド回三目仏眠
トドの盾+23 弟見金爆弟眠

>>今回の教訓
・草効果の壺は保存代わりになる

>>今回の戦利品
・白発白中の腕輪

>>今回の記録
・モンスターの壺使用禁止
・ねだやし禁止
・白紙聖域みずがめコンボ禁止
・やまびこの盾無し
・透視、パコレプの腕輪禁止
・保存の壺禁止
・転ばぬ先の杖無し 何気に出現しなかった・・・

投げ割った保存の壺、数知れず・・・。
偶然にも白発白中をGETすることができた。活用して敵をワナにかけようかと考えたが、使い慣れてないので使用せず持ち帰ることを優先とした。
モン壺はなぜか4つも出現した。まだ捕まえてないモンスターを捕獲したいところだったけど、アイテムの空きに余裕が無かったので断念。
強化の壺は・・・狙う余裕なんてありませんでしたw

とりあえず一通り読み終わり

ブログネタ
ゲームあれこれ に参加中!
ダンジョンゲームに関しての本をとりあえず一通り読み終わった。
・乱数
・ダンジョン生成
・移動、戦闘
・モンスター、アイテム配置
・ワナ
etc...ローグライクゲームに必要な内容はほぼ完備されていた。更にはテキスト表示からグラフィック表示に移行するためのDirectXのことについてもある程度触れられていた。
流石に店や合成などといった後続システムについては紹介程度となっている。

とりあえずポインタなどについてはある程度理解しているので、クラスの仕組みさえ分かればソースは読み解いていけそうかな。まずはサンプルゲームをやってみて仕様の確認からはじめるべきか…。いろいろ時間が足りないなぁ。

RPGツクール

ブログネタ
ゲームあれこれ に参加中!
4d11c7cf.jpgRPGツクール SUPER DANTE


ゲームのプログラミングを勉強していたら、ふとRPGツクールのことを思い出した。ファミコン世代の自分たちは子供の頃誰しも一度は「ゲームデザイナー」になりたいと考えたものである。そんな中登場したのが、自分でRPGを作れるソフト「RPGツクール」。

自分はスーファミのRPGツクールに没頭した。あれは中学二年ぐらいだったかな。夏休みを返上して一作品完成させた記憶がある。初めてプログラミングというものに触れたのはこのゲームと言えるだろう。スイッチというものを使ってフラグを立てたり、if文やfor文にあたるアルゴリズムも感覚的に作っていた。実に楽しかった。一番の自慢は仲間入れ替えシステムのプログラムを自力で作ったことかな。

最終的には作りこみすぎてメモリーが足りなくなるという事態に…。今ではほとんど内容を覚えていないが、ストーリーは結構適当だったと思う。それでも、3つの試練を受けて先に進む場面や、ラストダンジョンの雰囲気やお約束の隠しキャラand開発室など今考えてみても結構良く出来てたなぁと思う。

まあこのゲームの一番の難点は「文章作成」だったがw

乱数のお話

ブログネタ
プログラム全般 に参加中!
ゲームに於いて欠かすことが出来ないのが「乱数」。
どんなダンジョンが生成されるか?どんなモンスターが出現するか?どんなアイテムが落ちているか?攻撃が当たるか外れるか?レベルアップでステータスがどれくらい上がるか?こういったものは全て乱数に支配されている。
乱数は時に神がかり的な奇跡を起こすこともあり、その存在を神格化したものが「旅の神クロン」様であるという考え方もできる。

では、この乱数をプログラムではどうやって扱うのか?
C++ではstdil.hにてrand()という乱数を生成する関数がサポートされている。シードと呼ばれる初期値のようなものを設定してやることにより次々とでたらめな数字を返してくれる。

しかしながら、これはあくまでシードの数値をある種の関数の引数にすることで求められた乱数であり、シードが同じ数値なら同じ乱数になってしまう。そう言ったことから、この乱数は擬似乱数と呼ばれる。こんなにコンピュータが進んでいる時代にもかかわらず、ある意味乱数に関しては実物のサイコロにも及ばないというわけなのだ…。

現在読んでいるダンジョンゲームの本では、rand()よりも更に周期の広い乱数を生成するMT(メルセンヌ・ツイスター)という方法を使ったプログラムを用いている。なんでもこのMTでは2^19937-1 というとんでもなく長い周期の乱数が作れるらしい…。しかも、高次元(623次元)に均等分布するらしい…。周期も均等分布もいまいちヨクワカランけど(笑
乱数生成だけでもなかなか深いテーマになりそうだし、勉強してみると面白そうかもなぁ。

因みに、アスカではターンによって乱数が決まっているという話があり、特定のターンに同じ行動を取ると、全く同じ結果になるなどと言われているが、詳しいことは分かりませぬ。
そういえば昔のファミコンやゲームボーイなどでも電源を入れた後、同じ行動をすると同じ結果になったりなどがあったなぁ。。

クラス(class)について

ブログネタ
コンピュータ に参加中!
ゲームのプログラミング、まあゲームに限ったことではないのだが、複雑なプログラムを組もうとすると「クラス」というものが度々出現してくる。クラスとは何ぞや?これがいまいちよく分からない。

クラスなるものを調べていると「オブジェクトシコウ」などと言う「これぞプログラミング」と言うようなよく耳にする威圧的でこじゃれた言葉も出現してくる。この辺になってくると、ちょっとプログラミングを齧った位の自分は敬遠したくなってきてしまう。

全然勉強していないけど、ちょっと調べた感じでは「クラスとは変数だけでなく関数もメンバーに入れることができる構造体のようなもの」ってことで良いのかな。じゃあ、それを使う利点は何なのか?となると分からない。こればっかりは実際に使っていかないと…。プログラミングの見通しを良くしたり、追加修正などが楽になるとは本に書いてある。宣言や参照が便利ということ?

まあ実際にプログラムも組まず、頭だけで理解しようってのが無理な話か。。

C++ Class

ランダムダンジョン生成のアルゴリズム

ブログネタ
フリーソフト に参加中!
8ceec365.jpgダンジョンゲームの基幹を為す部分と言えば、ランダムダンジョンに尽きる。プレイするたびに形の違うダンジョン、配置の違う敵、違うものが落ちているアイテム…これらが飽きのこさせない深いゲームを作り出しており、1000回遊べる要因となっている。

ではまずランダムダンジョン生成のアルゴリズムについての話を。
ローグライクゲームは基本的に部屋と通路で構成されている。これが熱いかけひきを生み出すわけだが、単純にこれらを作ろうとするアルゴリズムを自分なりに考えたりもしたが、部屋が重なってしまうという問題がなかなか手強かった。

だが、その解決方法はいたってシンプルなものだった。フロアをいくつかの区画に分けて、その中に部屋を配置すると言うのである。なるほど、フロアの中には見えない区画が存在していたのだ。それから通路などを矛盾の無いように配置しダンジョンの完成と言うわけである。
因みにシレンシリーズは通路が先に生成されているとか。

あとは、区画の区切り方を工夫したり部屋の形のバリエーションを増やしたりなどで無数のダンジョンが出来ていくと言うわけだ。この辺はまだまだアイデア追加の余地がたくさんあるだろう。シレンシリーズだと部屋、通路に加え壊れない壁や水路などが追加され非常に戦略性に富んだものになっている。アスカでは部屋の配置がおおよそ決まっている固定地形なども存在しており経験や知識が活かされる場面も多い。

どんなダンジョンを作るか。これこそがローグライクの命と言えるだろう。システムやアイテム、モンスターなどは二の次と言える。

Rogue(ローグ)へのいざない

ブログネタ
プログラム全般 に参加中!
ダンジョンゲームプログラミング


Rogue(ローグ)とはランダムダンジョンゲームの祖となったゲームで、自分が中毒になっている最高峰のゲーム「風来のシレンシリーズ」の元祖にあたる。故に、ランダムダンジョンやターン制を備えたゲームを一般的にはローグライクゲームと呼ぶ。

Rogueの発祥は30年ぐらい前にさかのぼると言われており、元はUNIXに付随されていたキー操作練習用のゲーム(windousで言うところのソリティアか?)だったらしい。その後、オープンソースのクローンが製作され、数々の人の手によって改良、追加が加えられていった。そうして生まれたゲームの一つが「風来のシレン」と言うわけである。

Rouge(正確には原作ではないが)は少しだけプレイしたことがある。元祖であるにもかかわらず、モンスターハウスや満腹度など現存するシステムが既にほぼ完成されていたことに驚きを覚えた。

RogueはC言語プログラミングで作られており、自分にも多少は理解ができる。そこで、ローグライクゲームの内部を知るためにもソースを解読してみようと考えた。しかしながら、まだまだ分からない部分も多く諦め気味だったところ、助けに舟と言った感じで本書を発見し衝動買いしてしまった。

本書「ダンジョンゲームプログラミング」は「1000回遊べるゲームの作り方」と銘打たれており、まさにローグライクゲームのプログラミングについて述べられている。構成は
Chapter01 ダンジョンを解剖する
chapter02 実践ダンジョンゲームプログラミング
chapter03 ゲームの更なる作りこみ
chapter04 もっともっと作りこみ
製作環境はC++とDirectX。
ランダムダンジョン生成のアルゴリズムや敵の行動ルーチンなど猛烈に知りたかった事が山盛りとなっている。

プログラミングの勉強とローグライクゲームの解剖を兼ねて本書をこれから読んでいきたいと思う。

ローグ - Wikipedia
ローグライクゲーム - Wikipedia
ローグ分室
ブクログ
Twitter
Archives
Weather


-天気予報コム- -FC2-
Profile

こしあん

Author: Seiyo Age: 30
Sex: Male♂ Address: 東京
Job: 永遠の学生
日々ダンジョンに潜り
ホークスを応援しつつ
時にはヴァナディールに身をよせ
通学中の読書の為に会社へ行く

TBP FFXI
TBP FFXIV
TBP SoftbankHawks
Banner
スポンサードリンク
Blog内検索

powered by Google
amazon
Vana'naVi
FinalFantasyXI
DARTSLIVE
VS PHOENIX
  • ライブドアブログ