どり〜むきっず 〜ゲーム制作支援サイト〜
トップ | 初めての方へ | プロフィール | メールマガジン | リンク

同人ゲーム制作支援 | ゲームアルゴリズム勉強法 | C言語入門

今日のみなせけ | インフォプレナー | ゲームプログラム講座

めるまがきっず「ゲームプログラミングで意識すべき重要な事」


////////////////////////////////////////////////////////////////////////////////
//
//         ☆ めるまがきっず ☆
//
//     〜ゲームプログラミングを主とした、ゲーム制作支援メルマガ〜
//
//
// 配信者:
//   早瀬 竜也(たつにい)
//
// 配信日:
//   2008/11/17
//
//
// 第26回 「ゲームプログラミングで意識すべき重要な事」
//




相変わらず筆が遅くてすいません。


しばらく配信しないうちに、何気に読者さんが増えていたことが
とても嬉しいです。

僕のゲームのお話が誰かの為になり、楽しみに読んでくださる
という実感が、僕の心の支えになります。


さて、初めてメルマガを読んでくださっている、

 あ な た !

同人ゲームプログラマーの早瀬と申します。

ゲームプログラムというものはゲーム企画やゲーム絵とは違い、
「実際にゲームを作る」という、最もゲームに近いところに
あるんです。

僕の場合、基本は同人なので気軽にやっているところもありますが、
実際にゲームを作るという、最もゲームに深く関わるところにいると
ゲームの本質というものが色々と見えてくるものです。

そんな僕もただ漠然とゲームを作っていたこともありましたが、
こうして自分から情報を配信してみると、自分も成長したものだと
実感できます。

僕のメールマガジンを読んでみたいって思ったということは、
あなたもゲーム制作に興味があり、「作ってやるぞ!」と
意気込んでいらっしゃることと存じます。

僕はそんなあなたの為に、僕が今までのゲーム制作の経験から
身にしみて痛感したことや苦労したこと、成功したことや、
学んできたことなどを、コンテンツやレポートにまとめ、
僕のホームページ
「どり〜むきっず 〜ゲーム制作支援サイト〜」にて
公開しております。

↓どり〜むきっず 〜ゲーム制作支援サイト〜
http://dreamkids.sakura.ne.jp/


物事を効率よく進めるには先人の知恵や体験談から良い事を学び、
悪いことは避け、既に出来上がっている道を渡るのが一番です。

そんな道筋を記した地図が沢山ありますので、もし宜しければ
一度僕のサイトにお越しくださいませ!

ゲーム制作に興味のある方なら大歓迎です!

特に僕の場合、同人でやってますので、たとえあなたがアマチュアでも
僕だってアマチュアなので、近い視点からゲーム制作についての知識や
体験談をコンテンツやレポートにまとめております。

もし宜しければ下記リンクからどうぞ!

↓どり〜むきっず 〜ゲーム制作支援サイト〜
http://dreamkids.sakura.ne.jp/


そして、前からメルマガを読んでくださっている、

 あ な た !

本当にありがとうございます。

あいも代わらず配信は不定期ですが、見捨てずに
購読してくれて嬉しいです。

あなたの支えがあるからこそ、僕も頑張って文章を書いています。

これからもよろしくお願いしますね!




■ゲームプログラミングで意識すべき重要な事


さて、前回のメルマガを読んだならわかると思われますが、
ゲームプログラム時に意識すべき事柄があります。

それは「時間の流れ」と「無意識」と「数値」です。

前回は特に「時間の流れ」について詳しく説明し、
「無意識」についても説明しましたが、
「無意識」については少し説明を簡略化しすぎてしまいました。

ですので、今回も「無意識」について再度説明させていただきます。

なお、前回のメルマガをまだお読みでない方は下記URLよりどうぞ!

ゲームプログラミングで意識すべき基本知識




●無意識を意識する2


……っと、その前に、このメルマガを今お読みになっている
「あなたにオススメ」したいPS2のゲームがあります。

それは超常現象が絡んでくる、とあるサスペンスアドベンチャーです。

あなたは「無意識を意識する」という項目を読んでいますが、
その意識と無意識……そのゲーム中では自我と識域下となってますが
人間が普段、意識している行動と無意識にしている行動について、
ものすごく深いところまで調べ上げ、話として描かれています。

そして僕はそのゲームをプレイしたからこそ、今までさほど気にも
留めずにプログラミングしていた無意識的なゲーム処理に気がつき、
今、この内容のメールマガジンを執筆しているのです。

そのゲームでは「人間の行動の99.9995%は識域下の働きによる」と、
表現されています。

自我による意識的な行動は、残りの0.0005%だけ……。

例えば映画館で映画を見ているときにジュースを
一口飲んだとします。

だからといって「喉が渇いたな。そうだ、ジュースを飲もう!
右手で紙コップを持って、ストローをくわえて、横隔膜を動かし
肺の内圧を下げて……」なんて事をいちいち意識したりはしません。

それらの細かなことは全て識域下が勝手にしてくれると
解説されています。

他の例えを出してみると、体の一部がかゆい時に「うーん、
ここんところがかゆいんだよなぁ」等と意識して体をかく人は
滅多にいないし、どこかに向かって歩き始めるとき「さて、足を
動かそう、右足と左手、左足と右手、右足と左手、左足と右手……」
と、意識しながら歩いている人もまずはいないでしょう。

人間の行動は一応、自我という大本の意識で動いてはいるものの、
行動一つ一つを細かに分断していくと無意識的な行動にまかせっきりな
部分が意外なほど多く見受けられます。

このオススメのゲームではそんなことを教えられました。

そのゲームは、このメルマガの最後で紹介しますので、
しっかりと読んでくださいね。


さて、この自我と識域下の話はゲームプログラミングにも
深く関係しているように思えます。

しかも結構、細かい意味で使えそうな気がします。


まず、大まかなところから例えとして置き換えてみると、
自我はゲーム仕様で、識域下はゲームプログラムと言えます。

例えばシューティングゲームで、○ボタンでノーマルショット、
×ボタンでレーザーショットという仕様だったとします。

更に細かい仕様としては、ノーマルショットは○ボタンを押している間、
常に発射され続け、弾切れすることは無く、パワーアップアイテムを
取ることにより強化されたり、一度に発射される弾数が増えたりします。

ノーマルショットの弾は丸く、その円ピッタリの当たり判定を持ち、
敵の当たり判定と当たったらヒットした事になり、中ダメージを与え、
ヒットした弾は消えます。

レーザーショットは×ボタンを押した瞬間に自機から画面端まで直線上に
発射され、×ボタンを押している間、常に発射され続けますが、
発射している間はエネルギーを消費し続け、エネルギーが切れると
レーザーショット自体も打ち止めになります。

エネルギーはレーザーショットを発射していないなら徐々に溜まって
いきますが、ノーマルショットを発射しているとエネルギーが溜まる
割合が少なくなり、何も発射しないでいるときが最も早く充電されます。

レーザーショットの当たり判定も自機から画面端までの一直線上であり、
その直線上に敵の当たり判定が進入したら極小のダメージを与えますが、
レーザーショットは敵に当たっても消えないため、その極小ダメージを
毎フレーム与え続けるため、ノーマルショットよりも強力な攻撃力を
発揮することになります。

このように、仕様を文章として事細かに書くと、結構長々となりますが
実際にシューティングゲームを遊んでいるときに、そんな仕様を意識する
プレイヤーは滅多にいないことでしょう。

はじめてこのシューティングゲームを遊ぶとき、マニュアルを見ながら
考えてプレイしている状態なら意識もするでしょうが、ある程度
遊びなれたなら、ノーマルショットとレーザーショットを無意識に
使い分け、状況に応じたプレイをすることでしょう。

でも僕の場合「さて、ゲームプログラムを作るか」と意気込んで、
上記の仕様を見たとしたら、「まだまだ細かい仕様が足りない」と
この仕様を考えたプランナーと相談して、足りない仕様を補います。

さて、あなたならどんな仕様が足りないと、お思いになりますか?

実際にゲームをプレイするのとゲームを作るのとでは、知らなければ
いけないことの量が全然違っているのです。

特に実際にゲームを構築していくゲームプログラムの場合、
仕様のほぼ全てを理解したうえで作るか、自分で仕様を
決めていかなければなりません。

例えば上記の仕様にてレーザーショットのエネルギーとありましたが、
この上限値はどれくらいなのか、どのくらいの割合で充電されるのか、
ゲームスタート時のエネルギーの初期値はいくらか、フルエネルギー時に
レーザーショットを発射したら何秒間発射できるのか等等、エネルギー
のみからざっと疑問点を割り出しても、これだけ不明点があります。

もっと細かく掘り起こしてみると、まだまだあるかもしれません。

ちなみに、事項の「数値を意識する」でも述べますが、上記の
エネルギーの仕様は後々から調整することも可能です。

まぁ、簡単に調整できるようプログラミングしていたならですが……。

つまり、プログラマー側で仮の値で作っておいて、後からプランナーと
相談して、実際にゲームの動きを見せながら調整するのもOKです。

まとめると、プランナーの書くゲーム仕様はあくまでもプログラマー等の
他のスタッフにゲームの内容を伝えるのが目的であり、ゲームの指針とも
言えるものであるが、実際のゲームとして具現化しなければいけない
ゲームプログラマーの場合、そのゲームで起こりうる事柄をほぼ全て
理解していなければ、形作る事が出来ないため、他人が意識しないような
細かな事柄なども、しっかりと意識して作る必要があります。

無意識を意識して……。


そして自我は関数で、識域下は関数内の処理と置き換えることも出来ます。

……これはどういうことなのか。

もし、よろしければ各自、自分なりに考えてみてください。

メルマガの内容を読んで知識を身につけるのも、とても良い事ですが、
自分で物事を考え、自分なりの答えを見つける事が出来ると
更に勉強になりますよ。

もし考えがまとまりましたら、その考えを僕にメールしてくれると
とても嬉しいです。

自分の為にもなりますので、もしよろしければ挑戦してみてください。

別に凄い考えとか、練りこんだ考えをする必要はありません。

ちょっとでも「こうなんじゃないかな?」と物事に対して思考し、
それを実際に誰かに伝えることが重要なんですよ。

少し話がそれてしまっていますが、コレができる人とできない人では
プログラマーという「作る人」として、大きな差があることでしょう。

ちょっと考えて、その考えを僕にメールで送る。それだけで、です。

間違っても良いんです。学校のテストみたいな採点なんて無いですし。

ただ、送ってくださる際は、次回のメルマガにて引用させていただく
場合がありますので、引用されるのが苦手なら「引用不可」と記して
下さると嬉しいです。

メールの件名は「関数と関数内の処理の考え」として、
あなたのお名前(ハンドルネームでもいいです)と、
あなたの考えを送ってください。

よろしくお願いいたします。




●数値を意識する


ゲームプログラミングって言うのは、つまるところ「数値化」です。

まぁ、ゲームプログラムに限らずプログラムは全てそうなります。

例えば今あなたがこのメルマガのこの文章、この文字を読んでいる
でしょうが、この文字はパソコン側としては文字コードという数値で
理解されていて、その文字コードをパソコンが解釈して文字の「絵」を
一枚一枚ずつ表示して、文章として見せているのです。

そして、パソコンで見る画像や写真、イラストなども、実質的には
単なる数値の羅列であり、それをパソコンのソフトウェアがその数値の
羅列から計算式により、それぞれのピクセルのRGB値を割り出し、
光の加法混色により一枚の絵や写真、画像イラストに見せているのです。

どうしてそんな面倒なことを行っているのかと言いますと、本来、
コンピュータというものは、数値しか扱えないからです。

更に正しく言うと、0か1のビットの違いしか判断できないのです。

ただしコンピュータは人間とは比べ物にならないほど高速に多量の
ビットの違いを判断することが可能ですから、ビットをまとめて
バイトにしたり、そのバイトで数値を表しても全く余裕です。

ただし古いコンピュータの場合、スペックの問題で画面モニターの
高速書き換え時など、無理矢理な処理では多少送れることもあります。


3Dゲームなどの画像表示では、遠近法や陰影、フォグなどを
ものすごくリアルに細かく数値化し、数値で仮想的な3次元空間を
シュミレートし、その空間を2Dであるモニターにリアルに
映し出しているのです。

実際に画面モニターの奥に、奥行きがあるわけではなく、奥行きが
あるように錯覚させた2D画像をリアルタイムで見せているのです。

まぁ3Dゲームで説明すると、いろいろと小難しいことが
多々ありますので、この辺で自重しますが、ゲームプログラムを
作るということは、あらゆることを「数値化」し、その数値と数値の
関係を出来るだけ「ゲームとして理想的」にする事と言えます。


先ほどの項目に出てきたシューティングの例をもう一度出しますが、
ノーマルショットの場合、どのように数値化すれば良いでしょうか?

弾のグラフィック番号、弾の画像の大きさ、弾の座標、弾の威力、
弾の当たり判定範囲、弾の存在フラグ、弾の軌道、弾のスピード。

ざっと上げただけでもコレだけの数値を「数値化」しなければ
なりません。


数値化で重要なのは、それぞれの数値の「相互関係」です。


大切なのでもう一度言います。


数値化で重要なのは、それぞれの数値の「相互関係」です。


弾の座標と弾の威力は相互関係があるでしょうか?

この二つの場合あんまり関係ありません。

では弾の座標と弾のスピードの場合、どうでしょうか?

この二つは大いに関係あります。

何故なら弾の移動スピードにより、弾の座標は刻々と変化するからです。


更に、弾のグラフィック番号と弾の威力ではどうでしょうか?

これは一見、関係なさそうに見えますが、関係を持たせるべきです。

何故なら、ノーマルショットはパワーアップするという仕様があるから
弾の威力が可変であり、それに伴う視覚効果もあるほうが良いからです。

シューティングをプレイする側で考えてみてください。

ノーマルショットを打ちながらパワーアップアイテムを取りました。

でも、放たれるショットの見た目は全く変わっていません。

敵にショットを打てば、確かに威力は上がっているみたいですが
なんだか釈然としない感じになるでしょう。

でも、ショットの見た目が一回り大きくなったり、色が変わったり
すれば、敵にショットを撃たずとも「パワーアップしたんだな」と
感覚的に理解することが出来る事でしょう。


そして、なんとなくは想像が付くと思いますがゲームバランスを
整える上では、ショットの威力と敵のライフの数値のバランスが
重要だということを意識しなければなりません。

でも、それだけではありません。

ノーマルショットとレーザーショットのそれぞれの数値も、
きちんと相互関係を持たせ、バランスを整えたほうが深みのある
面白いゲームを作り上げる事が出来ます。

まずはそれぞれのコストと威力についてです。

仕様ではエネルギーという概念があり、そのエネルギーが
レーザーショットと深い関係があるように見えますが、
ノーマルショットにも十分に関係があります。

もう一度、仕様をよく読んでみてください。

エネルギーは常に徐々に回復していきますが、ノーマルショットを
撃っているときは回復量が少し下がり、レーザーショットを打つと
レーザーを放っている間は常に消費し続けます。

これはどういうことでしょうか?

一応、エネルギーに上限値はありますが、エネルギーは常に
回復しています。

そして、その回復量よりも少ないエネルギーコストで
ノーマルショットを撃てるということになるのです。

逆にレーザーショットは回復量をはるかに超えるコストで
やっと発射できるということになるのです。

ノーマルショットはノーコストではなく、ローコストで、
レーザーショットはかなりのハイコストだということです。

だから、レーザーショットはコストに見合った便利性と
威力が必要だということです。

そのとき比べる対象になるのは必然的にノーマルショットと
いうことになりますね。

でも、仕様をしっかりと理解していればノーマルショットよりも
レーザーショットの方が圧倒的に便利だというのはわかると思います。

ノーマルショットはその名の通り、シューティングにおける普通の
ショットなので、放ってから数フレームでやっと画面端まで到達しますが
レーザーショットは放てば一瞬で画面端に到達します。

そしてノーマルショットは敵に着弾すれば消えますが、
レーザーショットは敵に着弾しても消えず、常に毎フレーム
ダメージを与える事が出来ます。

ハイコストでも使用する価値は十分にあるということです。

状況に応じてノーマルショットとレーザーショットを使い分け
それぞれのステージ攻略を楽しむ事が出来るでしょう。

ただし、一つだけネックな仕様としてノーマルショットの
パワーアップがあります。

どこまでパワーアップするかにもよりますが、ノーマルショットが
強力になりすぎると、わざわざ高いコストを払ってレーザーショットを
使う意味がなくなってしまう可能性が出てくるということです。

せっかく、ショットを使い分けて攻略を楽しむという
面白さのバランスがこの偏りで崩れてしまうのです。

数値化の話から少し脱線しますが、この状況を解決するには
数値の調整もさることながら、仕様も軽く見直すと効果的です。

例えば、ノーマルショットのパワーアップと連動して、
レーザーショットの威力もアップするとか、レーザーショットしか
通用しない敵が現れるとか、エネルギーの上限や回復スピードが
アップするアイテムを追加するのも良いかもしれません。

あとは、ノーマルショットのパワーアップの段階をかなり多く設け
最終的にはものすごい威力になるのですが、パワーアップするたびに
ノーマルショットのコストも上がり、ある段階からエネルギー回復量を
超え、エネルギー残量を睨めっこしながらノーマルショットを放つ
ような状況を作るのも面白いかもしれません。

そうなったら、プレイヤーもあえてパワーアップアイテムを取らずに
ゲームを進行させるという駆け引きも生まれ、面白いかもしれません。

このようにコストを儲け、メリット、デメリットをルール付けると
いろいろな駆け引きが生まれ、ゲームがますます面白くなります。

でも、それらのルールも基本は「数値」を意識して、数値化し、
それぞれの数値の「相互関係」から形作られているのです。

一つの概念に数値をつけた場合、その概念の数値に比べたら、
別の概念の数値はどのくらいにすればゲームとして面白くなるか?

意識するとしないとでは、ゲームプログラムの質が
まるっきり違ってくるでしょう。




追伸:


実は現在、とあるプロジェクトを少しずつ進めております。

まだまだ準備段階なので多くのことは教えられませんが、
言える事は「一週間で○○○ゲームを作る手順」です。

アマチュアでも「同人ゲームが作りたい!」って思うことがあるでしょう。

でも、ゲーム作りが初めてなら「まず何をすれば良いのか」が
わからないと思います。

まぁ、ゲーム作れる人間からぶっちゃけて言わせてもらえば
「何でもいいからゲームを作ればいい」だけの話なのですが、
何の考えもなしに、いきなりメンバーを集めて同人ゲームを
作ろうとしても、どこかで崩れるのは目に見えています。

そのことは下記リンクでも詳しく語っております。

同人ゲームが完成しない17の理由


だからこそ、初めての初心者でも最低限のパソコン知識と
インターネット環境と「やる気」さえあれば、一週間ほどで
作れるほどの小規模かつ単純な練習用ゲームを作るための手順を
今までの同人ゲームプログラマーとしての経験を元に、
少しずつまとめています。

プログラムの知識は必要ありません。

絵が描けなくても、問題なく作れます。

シナリオが書けなくても大丈夫です。

もちろん、それらが出来たに越した事はありませんが、
このプロジェクトでは本当に簡単にゲームを作り上げる事が出来るため、
……っというよりは、そこまで仕様を単純化させ、誰でも作れるように
とことん簡略化させて、それで尚且つ同人ゲームの大まかな流れを
身をもって知ることの出来るように、考え付いたものです。

僕の頭の中では既にほとんど完成しているのですが、
相変わらず僕は筆が遅いため、物理的に出来上がるには
まだすこし時間が必要です。

手順の中には僕の今までの経験からの、ちょっとした豆知識や
失敗しないための手段、面白くするためのアイディアを詰め込みます。

手順は非常に単純で、その気になれば休日の一日であっさり
完成されられる人も中にはいることでしょう。

そして、手順にそって完成させたのなら、それをベースとして
更に少しだけステップアップしたゲームへと改変していく手順も
追加していき、階段を登る感覚で、あなただけの同人ゲームが
出来上がってしまうかもしれません。

一度でもゲームの全容を自分ひとりで作ってしまうと、
それがどんなに小規模でしょぼいゲームだとしても、
あなたはそのゲームの全容を理解できてしまいます。

その上で、色々と後付け肉付けするのは非常に簡単で、
ゲーム制作で悩んでいたことが嘘みたいに晴れるでしょう。

僕は現在、そんなプロジェクトを進めておりますので、
もし宜しければ応援してくださいね!




追伸2:


寝たきりの父親のベッドの横にパソコンを設置しました。

父は毎日毎日することが無く、ただ単にぼーっとテレビを見て
一日を無駄に消化することが多いです。

でも、パソコンを設置して、マージャンゲームのやり方を
教えたら、面白がってよく遊んでいます。

僕自身はマージャンのルールがわからないので、色々と会話することは
出来ませんが、ただテレビをぼーっと見ているよりもゲームをしていた
ほうが頭を使うでしょうから、ボケ対策には良いかも知れません。

本当は、もっと話し相手になってあげたり、ドライブに連れて行って
あげたりすれば、父の毎日も楽しくなるのでしょうが、僕もそこまで
暇ではないため、父には不憫な思いをさせています。

どり〜むきっずでの収入をうまい具合に増やせれば、親父に車椅子を
買ってあげたり、バイトのシフトを減らして旅行に連れて行ってあげたり
歩けるようになるためのリハビリにも協力できるのですが、
今はまだ、親父には我慢してもらうことにしています。


いつか、僕も立派に親孝行できる人間になります。

長かったにも関わらず、最後までお読みくださり
ありがとうございました!

今後も頑張りまっす!




●12Riven -the ψcliminal of integral-


↓気になる方のみ、今すぐクリックを……

12Riven -the ψcliminal of integral-




メールマガジン「めるまがきっず ゲーム制作支援メルマガ」

発行責任者:早瀬 竜也(たつにい)
公式サイト:「どり〜むきっず」 http://dreamkids.sakura.ne.jp/
問い合わせ:hakka17@hotmail.com
発行サイト:「まぐまぐ!」 http://www.mag2.com/
登録・削除:http://www.mag2.com/m/0000254884.html



上記の記事は僕が配信しているメールマガジンのバックナンバーです。

配信は不定期ですが、忘れた頃にゲーム制作に関しての有益な情報を
受け取ることにより、ゲーム制作の潜在的意欲が上がるかもしれませんよ?

登録は無料ですので、興味のある方は下記フォームよりどうそ!

メルマガ登録・解除
 


過去バックナンバー




メニュー






トップ | 初めての方へ | プロフィール | メールマガジン | リンク
Copyright (C) 2008 どり〜むきっず, All Rights Reserved