#挨拶は基本
お初にお目にかかりまする。
某、togoといふ者にて候。
この度は、部活 (NITKitコンピュータ研究部) のアドベントカレンダーに気まぐれで参加してしまったために、Qita記事を初投稿している次第です。
ブログもそうですが、在学年数に対して保有している技術力も極めて低いため、拙い点が多々見られると思いますが、ご了承ください。
#本題
##概要
さて、今回稚拙な技術力で何を偉そうに語るのかと申しますと、ずばり ゲーム制作 に関する小話をさせて頂きます。
私は将来の進路希望のためにも、 ゲームプログラミング に最も力を入れております。
なのでゲーム制作に関してはそれなりの知識を有しているつもりです。
また、今回はその中でも特に自信のある アイデア力(りょく) に関する話をしたいと思いました。
ただ、あまり下手な大口を叩けないので、今回はあくまで 初心者向けの超基本的内容を3つ だけお話します。
それでは、お付き合いのほどよろしくお願いします。
##①自己欲求を満たす
難易度にもよりますが、ほとんどのゲーム制作は 大量の時間 を用します。
RPGのレベル上げのように、長時間作業を行うことは、自身の モチベーションを徐々に下げる効果 があります。(「飽きる」、「だれる」といった現象です。)
そのため モチベーションの維持 というのは、ゲーム制作において、ある種 最大の課題 とも言えます。
「今流行りのもの」や「評価の高いもの」を意識して制作しても、 自分が好きでなければ 、開発意欲は長続きしません。
その解決策として最も有力な方法が、 「自己欲求を満たすこと」 であります。
先ずは 「自分はこのゲームを遊びたい!」 と思える1本を作りましょう。
そういったゲームは、 作っている最中も楽しい ですし、 完成が待ち遠しくなる ため、モチベーションを維持し、 完成させやすくなる と思います。
一度 完成を経験 すれば、要領を押さえ、モチベーションの維持もしやすくなり、様々な種類のゲーム制作を、スムーズに行えるようになるはずです。
##②ゲーム以外の知識も重宝する
ゲーム制作のアイデア出しでよく用いられる手法が、「すでにあるゲームからアイデアを得る」方法であります。
ゲームを作るのだからゲームを参考にすることは当たり前だと思いますが、これでは既存のゲームと似たり寄ったりなゲーム性になってしまい、 独創性に欠けた作品 になってしまいます。(個人的に、これは現在のソーシャルゲーム界隈で実際に起こっていると思います。)
そんなときは、 「ゲーム以外の観点からアイデアを引っ張ってみる」 ことを推奨します。
例えば、僕はカラオケの採点で高い点数を取る方法を心得ております。
こんな、いかにもゲームと関係なさそうな知識でも、
・音程バーに合わせるように上下に移動する
・きれいな抑揚がつくように声量を調節する
・歌い終わりに上下に往復し、ビブラートを作る
というふうに、いかにも ゲームっぽい操作で捉える ことができ、これを基に 1本のゲームを作る ことができる気さえします。
このように、 ゲームとは無関係なところからアイデアを出す ことは可能であり、それは 高い独創性を保有している 確率が高いです。
幅広い視野 を持つこともまた、ゲーム制作者にとって、大切なスキルなのです。
##③システム設計はアルゴリズムから
ゲームシステムの設計は、大変に頭を使うものです。
「6×5のマスに敷き詰められた、色の違う球の1つを持って、場所を交換しながら移動し、持つのをやめたとき、3つ以上同じ色の球が並んでいたら、それを消して、スコアを加算する」
といった、どこか見たことあるゲームシステムも、プレイする側は単純に見えますが、作る側の立場で見てみると、どういう処理を行っているのか、 1文ではいまいちつかみにくい ものです。
こういうときは、 「1つ1つの動作」 をしっかり見つめてあげましょう。
(以下順を追って先のシステムの設計を行います。)
-
例えば色の種類が3色だった場合、それぞれの色を数字の「0,1,2」とします。
-
次に6×5 (「横 x × 縦 y 」とします。) の、中に0~2の数字を入れられる表を作り、それぞれのマスを0~5の x と0~4の y の座標で考えます。(( x , y )=( 0 , 0 )の時、一番左上を表し、数が増えるごとに、右と下に移動するものとします。)
-
初期状態としてそれぞれのマスの中に0~2の数字をランダムに入れますが、この時数字を入れているマスの左2つまでと、上2つまでのマスに入っている数字と、等しく3つ並ばないように入れます。(2つより前は確認済みになるため、含みません。)
-
プレイヤーが1つの球を持った際に、その持っている球の座標を取得します。
-
プレイヤーが球を動かした際に、動かした方向の座標の数字と位置交換します。(移動したことを判定する方法は、かなり複雑な内容になるため、割愛します。)
-
5を繰り返した後、プレイヤーが持つのをやめたところで、マスの数字を左上から順番に、右と下に3つ以上同じ数字が並んでいるかを判定します。
-
並んでいない場合は次のマス (右か下かは任意とします。) に移動し、並んでいた場合は、相応のスコアを加算した後、並んでいたすべての数字を0~2以外の数字に書き換え、最も手前のまだ判定できていないマスから再判定を始めます。
-
判定している座標が、最後の1つ前に到達した時点で、判定を終了します。(最後の1つ前の時点で、以降3つ並ぶことはないので、判定を終了します。)
このようにして、先ほどのシステムを 処理的に細分化 し、一つ一つの動作を プログラムにできそうな形 にしていきます。
まさしくこれを 「アルゴリズム(手順)」 と呼び、ゲーム制作をする上で 欠かせない考え方 となります。
#あとがき的な何か
以上で私の話は終わりとなります。
もともとそんなにたくさん書くつもりはありませんでしたが、納期ギリギリに書いてしまったがために、もっと希薄な内容となってしまって、申し訳ありません。
私の願いとしては、当然私自身が面白いゲームを作れるクリエイターになることもありますが、 世の中に面白いゲームクリエイターがもっと増え、プレイヤーを楽しませられる方が増えてくれる こともまた、私にとっては幸せなことであります。
~~内容が薄いのにあとがきが長々としていても仕方がないので、~~これにて閉幕とさせていただきます。
ここまでお付き合いいただき、ありがとうございました。
NITKtコンピュータ研究部 togo