この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
ゲームを作るとき、利用するソフトや制作形態によって、データをどう入力するかは 大きく異なってくる。この記事ではExcelで入力する場合を取り上げるが、考え方などは 他のツールでも役に立つかもしれないので、参考にしていただけたらと思う。
データの入力例
戦闘があるゲームを例として考えてみよう。
↓の画像はスキル設定シートにおける入力だ。データ的に必要なものだけを入力している。なお、実際のゲームでは消費MPとか威力とかその他色々な内容を設定する必要があるが、今回は例なのでこの程度にしている。
どの数字が何に対応しているか分からないこのシート、入力する人は大変な思いをするだろう。何百、何千とスキルがあったとしたら・・・想像するだけでゾッとする。入力ミスは当然起きるだろうし、時間もかかる。だが、Excelならそんな悩みは吹き飛ばせる。
データの入力規則とVLOOKUP
まずは新たに↓のようなシートを用意しよう。
そして
B5~B8をドラッグ→数式タブの中にある「名前の管理」→「新規作成」
と操作し、「スキル種類」と名付ける。次にB5~C8をドラッグして、今度は「スキル種類リスト」と名付ける。他の項目も同様にやっておく。
(余談:このようなシートを「reference(参照)」と呼んだりする)
一方、入力用のシートは↓のようにする。
そして
名称のセルを選択→データタブの中にある「データの入力規則」
と操作し、↑画像のように入力する。これで先ほど設定した「スキル種類」と名付けた
内容がプルダウン式で選択できるようになる。
次に数字が入っているほうのセルには、「=IF(D4=””,””,VLOOKUP(D4,スキル種類リスト,2,0))」と入力する。このように入力することでD4の値に合ったcodeが出るようになる。こういった自動で入力されるセルには分かりやすく色付けしておくといいだろう。↓こんな感じだ。
(余談:このようなIF文にすると名称欄が空欄だと何も出ないが、単にVLOOKUPのみにすると#N/Aエラーが出る。自分や開発環境のスタイルに合わせて使い分けてほしい。)
このような入力方法にすることで、作業効率をアップし、ミスを減らすことができる。さらに、この方法は後で「ターゲットのcode2番をランダム1体にしたい」となったときに、referenceシートの方で、2番にランダム1体、3番に全体、とすれば自動的に入力シートに反映される。ただし、名前の管理から3番目が外れていたら直しておく必要があるので注意。
文字列を書き換える置換
(置換なんて知ってるよ!って人は飛ばしていい。これは完全に初歩だ。)
先ほどのシートで、「ターゲットの単体を1体に書き変えたい」となったとしよう。referenceと合わせても「単体」と書いているセルは6個なのでこの程度なら直接書き換えても大したことはない。しかし、既にスキルを100個作っていたとしたら1つ1つ変えることほど馬鹿らしくて間違えやすいことはない。
ここは置換機能を使おう。ホームタブの「検索と選択」の中にある。検索する文字列には「単体」、置換後の文字列には「1体」と入力する。次に「すべて置換」を押したいところだが、先に「すべて検索」を押そう。これを押すことでこれから置換しようとしている対象のセルが全て見れる。押してみると、説明文の方に「単体」の文字が入っていることが分かる。(↓の画像のようになったはず)
もし説明文はこのままにしておきたければ、「セル内容が完全に同一であるものを検索する」にチェックを入れよう。あとは「すべて置換」を押せば完了だ。
エラー値チェック
Excelを使ったことがあれば誰でも「#N/A」「#REF!」などでイラッときた経験はあるだろう。こういったエラー値表示はいくつかの方法でチェックすることができる。ここでは3つほど紹介する。
1. 検索で「#N/A」などのありがちなエラー値を検索する
これはそのまんま。自分がよく見かけるものを検索しよう。ただ、エラー値表示は7種あるため、毎回全て検索するのは結構面倒くさい。
参考:エラー値は「#DIV/0!」「#N/A」「#NAME?」「#NULL!」「#NUM!」「#REF!」「#VALUE!」の7種。
2. 数式タブの「エラーチェック」
編集中のシートのあらゆるエラー値を調べてくれる便利なボタンだ。ボタンを押すだけで編集中のシートのエラーを調べられるのだが、検索のように一覧で見ることはできないし、ブック全体を調べることはできないので、シートがたくさんある場合はあまり有効ではないので注意。
3. 条件付き書式
これはエラーを探すというより、あらかじめエラーを探しやすくする方法だ。まずはエラーが起こりそうなセルを選択し、ホームタブの「条件付き書式」内のその他のルールを選択。「数式を使用して、書式設定するセルを決定」を選択し、「=ISERROR(A1)」と入力(A1は設定するセルの場所)。書式は気づきやすいようにセルを赤色にしたりすると良い。(↓こんな感じだ。)
こうすることで、設定したセルがエラー文を表示しているときだけ、設定した書式に変化する。検索と組み合わせれば、設定した書式を検索するだけで全て調べ上げることもできる。条件付き書式はエラーチェックだけでなく、様々なことに利用できるので色々試してみると良いだろう。ただし、条件付き書式はExcel全体が重くなる原因になりやすいので、多用は禁物。
表示順を設定する
設定したゲームデータが表示される順番は、勿論設定した順番になる。しかし、例えば「ポーションとメガポーションを作ったが、後からハイポーションを間に入れたくなった」となったときどうすればいいだろうか。
論理的には2つの間に行を挿入してハイポーションを作れば事足りるが、これはあまりよろしくない制作方法だ。新しく何かを追加するとき、一番下の行に追加しないと、どれが新しく追加したものか後から分からなくなってしまうからだ。
(1人で作っているならどうしようと勝手ではあるが)
さて、話を戻すと各行毎に数値で表示優先度を振ることになる。このとき、ある程度の桁数と一定のルールで振るといい。例えば回復系アイテムは「10001000~10009999」とか、強化系アイテムは「20001000~20009999」とかそういう感じだ。どう振るのが適切かはゲームによりけりなので自分で考えよう。
まとめ
いかがだっただろうか。他にも当たり前のようにやっていることや考えていることはあるだろうが、今回はこういうお題で思いついたものを書かせていただいた。
Excelは調べれば使い方はたくさん出てくるが、それをどう活かすかは自分で考えなければならない。いや、Excelに限らずどのツールでもそうだろう。自分はまだまだ未熟なのでもっと精進しなければならない。