ただいまゲーム制作中
このめちゃくちゃ忙しいときに限って、一体なにをやっているのだと自分を責めつつ、現在ゲームを制作している。
まったく飽きれたものだ。
これだから、いつまで経っても就職が決まらないのである。
そんな時間があるのなら、履歴書の1枚も書けという感じだ。
それはさておき、現在制作中のゲームのジャンルはパズルである。
プログラムはいたって順調。
メインモジュールは既に完成にほど近い状態である。
が、予定制作期間を大幅にオーバーしている。
ルールやそのためのアルゴリズムは非常に単純であるため、当初1~2日を予定していたのだが、未完成状態で既に4日が経過している。
これは『GR』の制作期間を大幅に上回る日数である。
しかも、このあとさらに周辺モジュールを組み立てなければならない。
さらに、プログラムが完成してもまだまだ先は長い。
まずはグラフィック。
現在はプログラムを急ぐため、グラフィックはかなりショボい画像を代用している。
とりあえずはこれをなんとかしたい。
常日頃「ゲームは中身」と言い張っている私ではあるが、ゲームの第一印象はやはりグラフィックで決定づけられるため、どうしてもこだわりたい部分である。
しかし、画像数が多くて結構大変そうだ。
そのうえ、自分の要求をクリアできるほどの「ドット屋」の技術が、いまだ自分の中に残っているかどうかは不明である。
こういうときは「外部発注」が手っ取り早い。
幸い私の周りには優秀なドット屋が(絶対数に対して)数多くいる。
しかし、みんな忙しそうである。
さすがに個人の道楽に巻き込むわけにはいかないので保留。
そんなこんなで、グラフィックには苦労しそうである。
それに加えて、BGMやSEにも手を付けなくてはならなく、もはや完成は見えてこない・・・
私はゲーム作りを甘く見ていたかもしれない。
まさか、簡単なゲームひとつ作るのに、こんなにも手間がかかるものだとは思っても見なかった。
まして、RPGともなれば制作に数年かかるのは当然である。
しかしながら、これが完成すればソフトウェア起動時に「ClockRoom」のロゴを出すことができる。
これは、長らく持ち続けていた夢なので、今はこれが楽しみで作っている。
それにしても、世の職人たちはすごい。
よく頑張った!
感動した!!
ドーナツ型の惑星
何でもかんでも物事を機械的に考えてしまうことは良くないとは思うのだが、どうしても理論的に考えたくなるような事がある。
しかしながら、自信を持って熱弁を振るった理論が間違っていたりすると非常に恥ずかしいものである。
それはさておき、今回も本当にどうでもいいことを理論的に考えてしまった。
それは、RPGの「フィールド」である。
RPGのフィールドの上空を空高く爽快に飛んでいると、どこまで行っても行き止まりが無い事に気が付く。
つまり、地図の端まで行っても、さらにその先へ進むことができるのである。
では、『その先』とは一体どこなのか。
RPGが好きな方ならすぐに解かると思うが、地図の端のさらに先へ進むと、地図の正反対の方向から出てくるのである。
これは、まるで地球のようなひとつの惑星を思わせる。
ところで、このRPGのフィールドのように、上下左右でループする事を「球面スクロール」というのだが、どうしても引っかかることがある。
それは、本当に「球面」なのかということだ。
空間認識が苦手な方には少し難しいかもしれないが、ちょっと考えてほしい。
上下左右環状の地図を球体にマッピングする事は可能だろうか?
もし、可能な方法があるのなら、是非、掲示板に報告していただきたい。
しかし、私が考えた限りではどうやっても不可能である。
それでは、上下左右環状の地図を持つ惑星とは一体どのような形をしているのか?
いささか強引ではあるが、実はなんとも不思議な「ドーナツ型」であることが解かる。
その解法は皆さんの頭の中でじっくり考えていただくことにして、RPGは所詮フィクションであり「ファンタジー」である。
そう考えると、ドーナツ型の惑星はいかにもファンタジーであり、それはそれで良い気はする。
DirectX Graphics レポート No.3
今回は魅惑のアルファブレンドについて書くつもりだが、知っている人は知っているのだが、今から書こうとする文書は実はかなり前に書く事が可能であった。
つまり、アルファブレンドの研究はかなり前に既に完了していたのである。
ではなぜ、今さら書くのかというと、これまた知っている人は知っているのだが、私は就職活動でへこまされてしばらく立ち直れなかったのである。
そして現在もなお、研究が完全に停止状態なのだが、これじゃあイカン!!
話は変わって、アルファブレンドを行いたい時、以前の2D描画の場合は、プログラマが1ピクセルごとに計算して描画する必要があった。
しかし、3D描画の場合はハードウェアがそれをおこなってくれる。
今回の場合、2D描画も3D描画の機能を用いる為、アルファブレンドを行う際はハードウェアの機能を使用する事が可能である。
手続きが多少面倒ではあるが、1ピクセルごとに処理していたことを考えれば非常に楽であり、なにより、高速である。
ちなみに、利用可能なアルゴリズムは「半透明」、「加算」、「乗算」など、必要と思われるものはひと通り揃えられる。
「揃えられる」と書いた理由は、アルファブレンドを利用する場合、プログラマが理論を設定してそれらを実現する必要があるからだ。
手続きが多少面倒である理由はこれにある。
ところで、ある不安が脳裏をよぎった。
スプライトにZ座標を与えて、なおかつそのスプライトをアルファブレンドで表示した場合はどうなるのか。
Z座標を用いれば、後に描画したスプライトを既に描画されているスプライトの後ろに描画する事が可能である事は以前に書いた。
しかし、Zバッファ法の性質上、ある条件下ではアルファブレンドが正しく働かないのではないかと考えたのである。
ある条件下とは、先に描画された半透明のスプライトの後ろに、普通のスプライトを描画する場合である。
期待する動作は、後に描画したスプライトが先に描画した半透明のスプライトを透して見えるというものだが、案の定、残念ながらそうはいかなかった。
後に描画したスプライトは、先に描画した「半透明であるはず」のスプライトに隠れてしまうのである。
この事から、アルファブレンドを用いる場合は、プログラマがあらかじめソートし、後ろから順に描画する必要がある。
ただ、2D描画の場合はそれでも良いが、3D描画の場合はそうはいかない。
なぜなら、ポリゴンを1枚1枚ソートして後ろから描画するというわけにはいかないからだ。
そのため、いくら高速とはいえ、アルファブレンドの多用は考え物である。
D-ink
パイロット社から、消しゴムで消せるボールペン「D-ink」という商品が販売されている。
何かと使いたくもないボールペンを使わされることの多い私は、聞き捨てならぬと早速購入。
使ってみた感想だが、普通のボールペンと比べるとやや筆の走りが悪い感があり、色も薄い。
しかし、新型のインクである為こんなものであろう。
この点は今後に期待する。
それよりなにより、消しゴムで消せるというのがポイントである。
面倒な修正グッズは一切不用なのだ。
しかし、最大の欠点が。
それは「公文書には使えない」ことだ。
そりゃそうである。
欲を言えば「書いてしばらくは消せるが、時間が経つと消せなくなるボールペン」などがあると非常に重宝するのだが。
DirectX Graphics レポート No.2
2D描画を行いたい時、そもそも2D描画能力が存在しない為、3D描画能力を用いて描画を行う必要がある。
その際に必要なのがいわゆる「板ポリ」。
つまり平らなポリゴンである。
このポリゴンはトランスフォーム済みポリゴンとして作成する。
これにより3D-2D変換は行われずに、X、Y座標がそのままスクリーンの座標に対応する。
つまり、Z座標は無視されるのである。
しかし、本当に無視されるのだろうか?
板ポリの場合、普通はZ座標にゼロを入れるのが無難であろう。
そして、複数の板ポリを描画すると、描画した順番の逆順に手前から表示される。
これは今までの2D描画と何ら変わりはない。
その為、プログラマはこの描画順番を考慮し、必要に応じてソートしなければならなかった。
しかし、それは板ポリのZ座標をすべて同一の値にした場合である。
それでは、異なる値を入れると一体どうなるのか?
私は2つの予測を立てた。
ひとつは「やっぱり無視される」、ひとつは「Z順に表示される」である。
そして実験を行った結果、後者の通りZ順に表示されたのである。
ということは、適当なZ座標値を設定してやる事により、今までプログラマが行っていたソートが一切必要なくなるのである。
私はRPGを制作する際にレイヤ問題で非常に苦労した為、この事は非常に興味深い結果である。
この「Z座標を持ったスプライト」は色々な場面で役に立ちそうである。