格闘ゲームを作ろうかと色々と考えて

ペイントで下手くそなガイルの絵を描いた。

f:id:karmen:20200528162419j:plain

カプコンSNKの1990年代の2D格闘ゲームは増えてゆくコンピュータ資源の使いみちとしてはブルーオーシャン状態であったのだが、リソースの用意の仕方は人力によるアニメーションの力技であったのだろうと思われる。

自分で作るとなると絵をアニメさせるために何枚も描かねばならず、なかなか行動が伴わない。対して、プログラムをずっと考えていたら、棒手棒足の関節をプロットして操り人形のようなアニメを作ったほうがラクかもナーと思い始める。

そのまま手足のパーツを描いてアフィン変換とZオーダで遠近感を持たせるとどうなるかとか、絵をプログラムで楽にできないかずっと仕事をしないで寝転がって考えていったら、その先にあるのが関節にポインタを付けて人形を操る初代バーチャファイターになるのだろうな。

俺は長らくゲームプログラムを1本のEXEなりJARで考える頭だったが、世の人に自分の職業をプログラマだと言って分かってくれる人は滅多におらず、個人事業主なのだがゲーム会社の社長さんと言われたり、いまどきそういうのシステムエンジニアって言うんですよと教えられたりする。システムなあ。システムって何だろうと今年の頭くらいから悩み始め、とかく有機的というのだから人がコンピュータに媒介してデータを改変出来るプログラムこそがシステムだろうという落とし所になった。

ワープロもシステムだし、パソコンに乗っているのもオペレーションシステムである。ではゲームはシステムなのかと言うと、ゲームプログラマって言うくらいだからプログラムなんじゃないのって思ったところで、そうじゃないターゲットファイルをゲームプログラムにするために外部設計する全てはシステムであり、俺はこれからシステムエンジニアとしての自意識を持って仕事に臨もうと思ったのであった。辞書で引くとシステムエンジニア情報処理技術者である。有資格者なのだが自意識は極めて低い。世の中の最新のソフトウェアに臆しているからだ。

そうして、ゲームをゲーム機に詰めるためにバイナリを小さくするための雑多なプログラム技術は現況では手作業になることが多いので、C言語アセンブラの知識を持ってハードコーディングできる人が最終決定権を持っているようにも思えるのだが、データリソースを準備するのにバイナリ手打ちで絵を描く人などいるはずもなく、ペイントやフォトショップなどのアプリを使う。そのアプリが乗っているのがオペレーションシステムだ(2回目)そこからビットマップやジェイペグにピングなどをゲーム専用のデータ型に変換するのもプログラムだ。システムはひとつひとつがデータかコードかフォームである。

つまるところ格闘ゲームの当たり判定などもプログラム上にコーディングするのでなく、データベースに座標空間をデータ化して技ひとつづつ入力して、ゲーム開始前に読み出してメモリに書き込み、実行時にそれを参照する仕様にするとプログラマでなくシステムエンジニアっぽいのだが、そうするとロードが長そうである。だからさらにデータベースからデータを取り出してメモリ空間に展開する形にして、ときにはそれを圧縮するプログラムなど書くと、もっと良いプログラムになるのだが、そうするとシステムエンジニアなのに仕事としてはまたプログラムを書くことになる。

俺はプログラムを書くのは嫌いじゃないが、昼寝のほうがもっと好きだ。そしてシステムとは何か考えることが最近のいちばんの課題なのである。プログラマなら分かる。しかし俺はどうやら社会からシステムエンジニアと看做されることを過大評価に思ってきたが、俺がしていることはプログラミングでも同時にシステムユーザであることには変わりない。コンピュータにはメモリやプロセッサが付いているがエンジンなどは付いていない。

だがシステム化すると仕事を丸投げしやすくなるので、プログラマから昼寝ラーになるためにはシステムを考えるのも悪くないなと近頃では思っているのだ。

ゲームを作るのにプログラマとかグラデザになるのでなくシステムを組んだらシステムにデータを組み込む作業が必要になり、それをもし自分でやるなら最初からハードコーディングで良いのだが外部化して他人の手を借りるのが普通で、そのためには会社を作ってお給料を出すのが普通なので、ゲームを作るために会社を作って融資を受けるのも発想としては分かるのだが、だいたい売れる見込みがないゲームを作って借金とクソゲーだけ出来て返済のために原本を割ったりまた働く羽目になるというリスクを考えたら、昼寝のほうが良いのだ。

もちろん、ブログを書くのもアイデアを隠して起業するより誰かが試しにやってくれたほうがリスクを自分で背負う必要がなくラクだからである。