戻る
このページはプログラムを専門とする方でないと理解するのに困難なことがあります。あらかじめご了承下さい。

ゲームプログラム・ソースリストの旅
パソコンゲームのプログラムはどうなっているの?

パソコンゲームのプログラムってどんな風に作っているのだろう。
パソコン好きならばプログラマでなくとも覗いてみたいと思うでしょう。

家庭用ゲーム機のソフトを作成している現場のプロフェッショナル達も、
パソコンゲームというジャンルに注目し始めています。
パソコンは高速なCPUを使い、豪華な音色のステレオ音源で音楽を再生し、
フルカラーの立体を高速に表示したりと、豊かな表現力を持っています。
パソコン一台あればゲームでもビデオでも音楽でも作ることができます。
パソコンゲームの一本あたりの利益が大きいのも、
独立心旺盛なゲーム制作者にとっては魅力的でしょう。

パソコンのプログラムはどうなっているのでしょうか?
少々古くて直接の参考にはなりませんが、
私のソースプログラムを時代別にほんの一部だけご覧にいれましょう。

PC9801版電脳学園3の頃
MACLIB.ASM
MSX2で遊んでいたときからプリメ2の頃まで使っていた文字処理サブルーチン群。
Z80から8086に書き換えたのです。そこへガイナから仕事が来たってこと。
言語:8086マクロアセンブラ

PC9801版サイレントメビウスの頃
CMDEFC.ASM
エフェクトルーチンのトップです。古くてエフェクト処理が12個しかない。
何年か後には26まで増えました。
言語:8086マクロアセンブラ

PC9801版電脳学園1ver2.0の頃
PARTST.ASM
パターンをプットするためのサブルーチン群の一部。
当時のアセンブラプログラマで、ここまで構造化している人はいませんでした。
言語:8086マクロアセンブラ

PC9801版プリンセスメーカーの頃
R_SOUBI.ASM
記念すべきプリンセスメーカー1のウインドウ処理ルーチンの一部。こんなソースが無数にあります。
WINDOWSというコメントがありますが、あのウインドウズとは違います。日本のゲイツになれる?
言語:8086マクロアセンブラ

IBMPC版プリンセスメーカーの頃
KEYBOAD.ASM
プリンセスメーカーのIBMPC版。DOS/Vが出たころに発売されました。出だしには全然売れなかった。
コメントの初めに「PC-9801UV11」とあり二行目に「PS55Z/S14」とありますが、これは98版を改造したためです。
PC98とIBMPCのキーボードのハードウェア構造は全く同じ。どちらがパクったのかな。
言語:8086マクロアセンブラ

PC9801版ふしぎの海のナディアの頃
BBJUMP.ASM
簡易言語処理ルーチンのごく一部。ジャンプコマンドの処理ルーチンです。
アセンブラで言語テーブルを処理しているなんて、いっちゃってますね。
言語:8086マクロアセンブラ

PC9801版プリンセスメーカー2の頃
VMUSCOR.ASM
マウスカーソルのルーチン群です。PC98とIBMPC+VGAの両方で動くハイブリッドなソースです。
そう、プリメ2のPC98版はIBMPC上で開発していたのでした。
自動的にPC98用とIBMPC用に切り替わる画期的なソフトだったのですが、公表しませんでした。
言語:8086マクロアセンブラ

IBMPC版プリンセスメーカー2の頃
WIDDISK.ASM
ディスクアクセス用のウインドウ表示ルーチンです。
画面はPC98の高さ400ドットからIBMPC/VGAの高さ480ドットに拡張されました。
言語:8086マクロアセンブラ

TOWNS版プリンセスメーカー2の頃
vrmove.asm
コメントを見ると1989年のADVMOV.ASMから1993年のi386版まで延々と受け継がれているのがわかります。
i386のコーディングは参考になりません。16ビットレジスタ表記が混在しているのでペンティアム時代には速度の低下するコードです。
このころはインテルがペンティアムに続いていくとは思っていなかった。
言語:i386アセンブラ+ハイテックC386

WINDOWS95版鋼鉄のガールフレンドの頃
bmpwaku.cpp
ゲーム画面の枠を描画するルーチン群の一部です。
オブジェクト指向のC++言語をフルに使ってオブジェクトコーディングしています。
現在ではソースコードの高速化よりも、ロジックの高速化のほうが重要です。
あと開発スピードも重要になりました。オブジェクト指向はWINDOWS時代の救世主となりうるでしょうか。
言語:VC++4.0

いかがでしたでしょうか。
ゲームプログラム・ソースリストの旅。
実はこれより古い頃のFORTRAN77のプログラムが興味深いのですが、
それはまた機会を改めてというところでしょうか。

戻る