ゲーム開発のお話…
今年の新年会の余興のために開発した簡単なゲームを再び使うことになったので、ここしばらくはそのゲームのバージョンアップを図っておりました。開発環境はWindows98SE、プログラム言語はBASICライクなインタプリタ言語「HSP(Hot Soup Processor)」です。今日がそのゲームを使う当日だったのだけれど、思ったようなバージョンアップになりませんでした。そんなお話。
このゲームは宴会の余興で楽しむようなものなのです。画面上には6つのコマがあり、サイコロの出た目の番号のコマが左端のゴールを目指して進んでいきます。進む際にはルーレットを回し1~3の数字が出るとその数だけ左に進むことができます。ただし「足踏み」を出してしまうと1マスも進めずその場で待機となります。そんな単純なゲームです。
HSPは初心者がプログラムを学ぶのに最適であり、ゲームなどを作るのにも向いているようなのですが、私は今までHSPを仕事用のプログラムを開発するのに使っておりました。ですので、ゲーム作成に必要な命令群をまったく理解しておらず、キャラクターを動かすたびに背景を書き直しているという力業を行っておりました(笑)。
子どものころにBASICでゲームを作ったことがあるので、スプライトを使って背景とキャラクターを重ねれば良いことくらいは私にも分かるのだけれど、新年会用にこのゲームを作ることになったのは年末で、数日しかなく正月返上の勢いで開発したのでスプライトを使わずに作ったわけです。当然、頭の中にあるイメージ通りのものは作れませんでした。
とは言え、新年会ではそれなりに盛り上がったので、次に使うためにバージョンアップをしようとは思っておりましたが…遊びではないとはいうものの、表だってゲーム開発をするわけにもいかず、しばらく放置していたのでした。
で、久しぶりにこのゲームのソースを見直したのだけれど…勢いで書いたソースの読みにくいこと(笑)。コメントも少なく、整形もほとんどしていないので自分で書いたのによく分からないんです。
とにかく、まずは実験でオープニング画像にてスプライトを使ってみようと思ったのだけれど…「DirectXが必要だ」みたいなエラーが出ます。
私の開発環境はメインの仕事で使っているもので、DirectXが入っていないのですね。それでDirectX8のダイナミックリンクライブラリ「d3d8.dll」をインストールしたのだけれど、Windows98に対応しているはずなのに動作しませんでした。Pentium III時代のマシンですからね。おそらくはビデオカードがダメなのでしょう。
かと言って別のマシンで開発すると色々と面倒ですし…力業(チカラワザ)で書いた部分はそのままにしようと思います。あとは…仕方がないのでキャラクターの表示方法だけ、ゲーム寄りの命令群を使って書き直しました。
で、このゲームを実際に使うことになって、蓋を開けてみると…バージョンアップが失敗であったことが分かりました。開発時、Windows98SEでは動いていたのに、会場にて社長のMacに入っているParallel Desktop上のWindows XPではバグを連発。ゲーム自体は動いたしできたのだけれど、キャラクター表示がおかしくなって、コマが表示されずオープニング画面の絵が動いたり、背景が動いたり…散々でした。原因はビデオメモリに間違いありませんね。エミュレーター上だから仕方がありませんが…。
幸いにして、もう1ゲームやることになり、社長のパソコンに残っていた前のバージョンを使うことで、画面表示の不具合はなんとか解消できたのは良かったです。
また、用意してもらった大きなサイコロの精度が悪くて、1と6ばかり出たんです(笑)。これでは公平性が失われてしまうので、次はサイコロ機能も実装するとしiOSアプリとしてiPadで動かすと良いかも。iOSアプリを開発できるスキルを身につければ、今後はアプリケーションやゲーム開発も事業としても成り立っていくだろうし、何より昼間から堂々とゲーム開発できるかもしれませんからね(笑)。