初期のスクウェアを支えたナーシャ・ジベリという天才プログラマー
スクウェアにはかつてナーシャ・ジベリ(Nasir Gebelli、ناصر جبلی Nāṣer Jebellī)という超天才プログラマーがいました。
彼の残した作品は今でもゲーム業界に伝説として語り継がれていますので、ここで彼についてご紹介していきたいと思います。
経歴
彼は元々イランの王族でしたがイラン革命によりアメリカに亡命してコンピュータを学びます。
その後、友人とApple II用のゲーム会社シリウス・ソフトウェアを立ち上げますが退職して新しくジベリ・ソフトウェアを立ち上げます。
しかし、アタリショックなどの影響も大きく会社は倒産してしまい世界放浪の旅に出てしまいます。
その世界放浪中に友人であるブローダーバンド(Brøderbund)のオーナーを訪ねた際、任天堂の宮本さんとスクウェアの坂口さんを紹介されます。
そしてナーシャのファンだった坂口さんから強い誘いを受けスクウェアに入社します。
そこからはファミコン版のファイナルファンタジーI・II・IIIなどのプログラマーとして日本ゲーム界での伝説を多く残すことになります。
ナーシャはファミコン版で出す予定だったファイナルファンタジーIVの開発に携わっていましたが開発中止となります。
最後に聖剣伝説2に携わった後はスクウェアを退社し、再び世界放浪の旅に出ます。
現在はカルフォルニア在住で坂口さんとの交流も続いているそうです。
伝説
CPUの動作を知り尽くしていた
当時のファミコンに搭載されたCPUであるリコー製RP2A03(MOS 6502カスタム)の挙動を仕様書に書いていないことまで知り尽くしており、それを利用したプログラムを行っていたということです。
当時のZ80などの8ビットCPU時代には未定義のオペコードを利用したプログラムが多く存在していましたので、いわゆる未定義オペコードなどのハードウェア仕様上の挙動不明バグを利用したコードを実際に書いていたんだと思います。
ハードの限界まで使い尽くしたプログラム
ファイナルファンタジーIの時には、坂口さんが無理だと思った飛行船が浮いているように地面に影を落とすという要望を実現して、さらに4倍速移動をハードのエラッタなどを利用して限界を超えて実現したりしています。
極度にハードに依存したプログラミングと、それに特化したデータ構造の工夫のおかげて素晴らしい作品が出来ているのですが、それが後にリメイクの障害になっていたりしています。
実装したコードを暗記している
重大なバグが発生したときにナーシャに電話で連絡を取ったところ、電話越しに修正箇所を指示されてその通りに修正したらバグが直ったという逸話が、当時スクウェアにいた複数の人から出ています。
彼はプログラムを打ち込む前に一度頭の中でプログラムを構成して全体を脳内シミュレーションして、うまくいきそうということを確認してからコードにタイプしていっていたのかもしれません。
ラスタースクロールなどの水平割り込み期間中の総クロック数が限られる小規模なルーチンだったら普通の人でも脳内シミュレーションできると思いますが、普通のメインルーチンくらいの大きなルーチンを脳内シミュレーションするのは至難の業です。
まとめ
現在のゲームプログラマーはUnityであったりUnrealであったり用意されたツールをうまく利用してゲームを作成することが多いですので誰でもプログラマーとして活躍できるいい時代になったと思います。
昔のリソースが限られている時代はハードウェアを極限まで操る面白さがプログラミングにはありましたが、プログラマーとして要求されるスキル的ハードルが高くて誰でもなれる職業ではありませんでした。
一度しか通らない初期化コード部分のメモリをワークエリアとして利用(現在のCPUではセキュリティ的に仕様上出来ません)したりと創意工夫しないとまともにメモリも速度も確保できない時代から、力技である程度実現できてしまう時代になりました。
とはいってもプログラミングスキルの基礎的な考えかたは今の時代でもとても大切です。
オープンワールドのようなゲームではうまく創意工夫して実装しないと、力技での実装ではリソースをすぐに使い果たしてしまいます。
現在プログラマーを目指している方は、昔のハードウェアが貧弱な時代にこのゲームはどのようにこの表現を実装していたのか、気になる部分を調べて勉強してみるのもプログラマーとしてのスキルアップになるかもしれません。
ナーシャ・ジベリというファミコン時代を代表する天才プログラマーは未来永劫語り継がれていくことでしょう。