ゲーム開発

実装者が仕様を切る、のか?

ゲーム開発をしていると、内容が曖昧なタスクが多いことに気づきます。
これがいろんな問題の根っこになっていることが多いんだな、ということにも。

たとえば──パラメータの上限下限

レベルの上限とか、HPの最大値とかそういうやつです。
いや、そんなのプランナーが決めて仕様書に書いてあるだろ?と思われるかもしれませんが、ものによってはなかったりします。ていうか無いことが多い。

UIに表示される、つまりプレイヤーの目に触れるモノについては、さすがに仕様書に書いてあります。最大レベルは999、とか。

ここで言うのは、内部パラメータとかのことです。

たとえばキャラクターID。
ゲーム中の、プレイヤーが手にするキャラ1体ごとに振られる、ユニークな番号です。仕様書にもそう書いてあったりします。で、初期キャラは12体、後から追加の予定あり、とあります。

ここで、じゃあいくつくらいまで増える見込みなのか?は、誰も分かりません。でも、実装するときには、idを持つ変数のサイズを決めないといけません。通信経路にも乗るデータなのでなおさらです。

何も考えずに uint64 とかやるとあとでしんどいことになります。
具体的にはデータベースエンジニアさんか、ネットワークのインタフェースの実装者に怒られます。怒られるくらいならいいですが、いったん稼働しちゃったら、この辺を直すのは大変です。

あとで Alter すればいいじゃん、とか気軽に言っちゃだめです。
(ゆえに、オルタって単語を聞くとちょっとびくっとします。癖です)

だって、最終的にキャラは100体行かないと分かっていたとしたら、 uint64、つまり42億もサイズがあっても無意味です。tinyint で充分です。

でもですね、最初の段階では、キャラがどれくらい増えるかは不明です。
不明なんですが、プログラマは変数のサイズを決めないとコードが書けません。じゃあってんで、最大取っておけばいいだろうと uint64 で(以下略。

そうなると、プログラマがプランナーに聞くわけです。

キャラって毎月何体追加予定?って。

そうすると、イベントで2体、最大で4体かなぁ、10体は物理的に作れないから、2桁になることは無いとおもう、みたいなのが出てきます。

それを聞いてプログラマは、じゃあ運営が10年続くとして(かなり長い)、尽きに最大10体増える、とすると、初期の12体を加算して、

12 + (10×12)×10 =1212

運営チームがめっちゃ頑張ってキャラ作りまくって、売り上げもよくて10年続いたとしたら、最終的に 1212体になる、と。
tinyintでは足りないけど、smallint なら十分だな、と分かるわけです。
少なくとも uint64 なんて不要だ、と判断する、ってわけです。

そしてこれはプログラマの仕事なのか、プランナーの仕事なのか。

経験上、両方の仕事、気づいた方がやればいいじゃん、と思ってます。

さすがにHPの上限とか、表示物の最大桁数が「わからん」だったらプランナーが考えろ、になります。でも、こういうゲーム本体と実装の狭間にあるものは、プランナーとプログラマ、さらにはデザイナーも一緒に顔をつきあわせて考えていくのが、事故が無いかなとおもいます。

事故るのは、「仕様は切ったからあとはよろしくね」ってプランナーが投げちゃう時。ほんとうに「全部」仕様書にあればいいですけど、たいてい何か抜けてます。実装している最中に見つかる穴も山ほどあります。

ですんで、

プランナーは、担当部分の仕様を切ったら、実装を手伝って、デバッグして、書いた仕様通りに動いているのを確認する

までが担当業務です。

ですから、ハードウェアの特性やプログラムのことは知っている必要がありますし、デザインやUIについても「担当じゃ無いから知らん!」ってのはよくないです(というか僕はそういうプランナーだと一緒にやりづらいです)。
分からないなら、目の前にプログラマなりデザイナーなりのプロが居るわけですから聞くべきですし、自分でもある程度は勉強して知っておきましょう。

ということで、自戒を込めて、なのでした。