UnityとPhotonでオンラインのオリジナルトランプゲームを作りたい その13 ~方針転換と変数の洗い出しと多次元リスト~
ここに書くのもちょっと期間が空いてしまいましたが、作るのをやめていた訳ではなく、むしろずっと作ることを考えている毎日なのです。UnityとPhotonのことを日夜調べまくり、頭の中では方針がだいぶ定まってきました。特に今までと大きく変わったのは、2Dではなく3Dで作ろうと思っていることです。その理由は、プレイしている状況を想像した時に平面でのプレイより、それぞれがいわゆる麻雀ゲームみたいな感じでプレイした方が、よりプレイ感が増すだろうと思ったからです。
さて、方針が定まったところで、ここいらで大事な作業をやっておかないといけません。それは「変数の洗い出し」です。Unity+Photonでゲームを作ったことはありませんが、他の環境ではいくつかのゲームやソフトを作ったことがあります。その時、一番大事だと思うのが変数です。変数とはデータを収納する箱のようなもの、とどのつまりゲームってのは変数によってすべてが支配されています。この変数をいきあたりばったりで作っていると、いつまでたってもゲームが完成しません。逆に言えば、変数さえカッチリ作れれば、もはやそれはゲームの完成と言っても過言では無いのではないでしょうか!(過言です。)
一応、ここには進捗を書くという流れでやってきていますので、今回収穫した知識を書き記しておこうと思います。それはC#における「多次元リスト」についてです。リストとは、配列とは違って要素の上限を定めなくもよく、そのあたりの自由度が高い仕組みだと理解しました。
ここで言うリストや配列とは、複数のデータをまとめて扱うための仕組みです。世に説明はあふれていますので簡単な説明をするなら、1さんの点数が30点、2さんの点数が45点、3さんの点数が21点、このデータをどこかに格納したいという時に、変数Aに30を、変数Bに45を、変数Cに21を格納するのも良いですが、変数A[1]に30を、A[2]に45を、A[3]に21を格納した方が、A[x]のxの数字をいじるだけで値が取り出せるから便利だよね。ってな感じの便利機能です。
ただ、配列ってのはあらかじめ要素の数というのを決めなければいけません。上の例だと3人だと分かっていますから、要素の数は3にしておけば良いですが、もしここに4さんが100点をひっさげて登場した時に、A[4]に100を代入しようとしてもエラーになったりするってことです。今回、僕が作るゲームはプレイヤーの数が2~6と不規則であり、さらにラウンドという単位でゲームは行われるのですが、何ラウンドで決着がつくかも決まっていません。なので、このあたりの処理に配列はあまりふさわしくない仕組みと感じていました。そこで登場するのがリストという機能。どうやらこのリスト、要素の数が自由らしく、まさに自分が作りたいものにピッタリはまった感があります。
ただし、ここで1つ問題が。ゲーム内ではスコアを表にして表示することになるのですが、「プレイヤーXが第Yラウンドで取った点数」を表したい時にどうしたら良いのか分かりませんでした。もしこれが配列ならば、多次元配列という概念というかテクニックを用いることで解決します。先ほどの書き方なら、A[X][Y]にデータを入れれば良い、という寸法です。さて、これがリストで出来るのか。結論から言うと、出来るみたいです。みたい、というのは、まだ実際にやってないからで、Unityを再び触る時には真っ先に試すこととなるでしょう。では、知識だけを整理しておきたいと思います。
var lst = new List<List<string>>()
lst.Add(new List<string>());
ですって、奥さん!きっとこのコードは後で必ずや重要な意味を持つと思いますので、大事に大事にここに記しておこうと思います。
変数を洗い出すという作業を、他の方々がやっているのかどうかは僕には分かりません。ゲーム作りの参考にするサイトなどでは、あまり見ないことだからです。ただ、僕自身はこの作業を最重要の位置に置いており、これが終わるとゲーム制作は一気に加速するということを経験からも実感しております。だから、今回もここから一気に加速!したらいいなぁ。