私の周りにはエクセルでマスターデータをを作成する人が多いのですが是非やめてもらいたいです。
そもそもマスターデータって何?
マスターデータというのはゲームを動かすために必要な各種定数の事です。
例えば、敵の名前や基本となる攻撃力や、防具の名前や防御力等々、ゲーム通して変更されることがない必須のデータ達がマスターデータにあたります。
こういうデータ達は誰かが入力してやる必要があり、入力されたデータはゲーム中からなんらかの方法で参照出来るようになっています。
※なんらかの方法はゲームの作り方によって大きく異なります。
エクセルマスターデータ
エクセルというツールはとても便利で様々な事が出来ます。それこそ、他のOffice製品の領分まで侵す勢いです。
ゲームでのマスターデータは往々にして表組みで表現されることが多く、一見エクセルと相性が良く見えてしまいます。
こんな感じです。
実際は何か係数が入っていて計算でこの数値を出すことの方が多いとは思います。
エクセルの問題点
ではいったい何が問題になってくるのでしょうか……
重たい
まずエクセルというツールは比較的重たいです。
とはいっても数百や数千行くらいのが数シートなら全然気にならないレベルですが、これが数万行や数十シートとかなるとファイルを開くだけで数分、編集していると再計算で固まり、やりすぎるとメモリ不足でエクセルがとても不安定になります。
どれくらいなデータ量になるのかといった最終的な規模感がわからないならなおさらエクセルは避けるべきでしょう。
最初は良くても中盤以降データがそろってくるとエクセルがまともに動かない…という事になりえます。
バージョン管理しづらい
エクセルファイルは差分がとても取りづらいです。差分を出すツールもあまり世に出回っていません。
自分で作るにしてもハードルは決して低くはありません。
そして差分が取れないという事は各バージョン間での具体的な変更点が分からないという事になります。
変更点が不明確だとバックアップとしては機能するものの、肝心などのような変更を経て現在のデータがあるのかがまったくわかりません。
また、CSVにすることで差分を取りやすくするという運用をしているところもありそうですが、エクセル→CSVで計算式が消えてしまうため、CSV→エクセルに戻すことが出来ません。
そのためCSV・エクセル両方をバージョン管理する必要があり、その両方が常に同一なのかをどう担保するかというのが手間になってきます。
マージしづらい
差分がとりづらくかつ、マージツールがあまりないのでマージが手作業になりがちです。
もちろんCSVでマージしたものをエクセルに戻すもあまり現実的ではありません。
マージが手作業の場合、漏れやニアミスがどうしても出てきてしまいます。
マージした結果も差分がとれなければ検証が難しいです。
多人数での作業がしづらい
差分がとりづらく、マージしづらいと来ると多人数で同一ファイルを変更する事が出来ない上に、変更した際は正確かつ具体的にそれを他のメンバーに伝える必要が出てきます。
エクセルには共有という機能はありますが、これは共有されたフォルダ内のエクセルファイルを同時に編集するのを想定した機能なので、バージョン管理ツールでこの機能を有効にすることは出来なかったと思います。
エクセルファイルを直接アプリから参照できない
ゲーム中からなんらかの方法で参照する、と書きましたがエクセルファイルはアプリから直接参照することが難しいので事前に何らかの変換をする必要が出てきます。
例えばアプリから使う際はCSVとして保存したものを使うといった感じです。この場合元のエクセルとCSVが同一データかを担保する必要があります。
また、場合によっては一括変換するマクロを作る必要が出てくるかもしれません。
とは言っても、これはどんなフォーマットを使おうと少なからず出てくるものではありますのでエクセル特有の話ではありません。
結局どうするのか?
エクセルのマスターデータがだめなら結局どうすべきかと言いますと、多少コストがかかったとしても専用のツールを用意するのが良いと思います。
同じ会社内であったり、チーム内であったりなら使いまわすこともできるので2回目以降のコストは下がると思います。
結局エクセルは資料を作るためのツールなのでどこかで無理が出てくると思います。