説明



ここではやや専門的な話をします。
分からない人は各自で勉強して下さい。


始めに

この作品のテーマは「3次元空間」です。
1作目として「シューティングもどき」を作った後、

思いのほか良いものが出来たなあ。
この調子でもう一歩進んだものを作れんかなあ?

と、欲を出して

1作目は2次元だったから今度は3次元にしよう♪

とこの上なく安易な考えで作ってみました。
でも、ちゃんと動くものが出来たでしょ。


プログラム的な事1

基本的に前作のシューティングもどきと同じです。

ゲームそれ自体は「JavaApplet」です。
フルスクリーン表示は「JavaScript」を使っています。

「JavaApplet」と「JavaScript」は無関係の別物ですから注意。


「JavaApplet」というのは
プログラミング言語「Java」で作ったプログラムです。
Webページ(=HTML文書)に埋め込んで動かします。

埋め込むってのはHTML文書の中に
<applet code="***.class" width=800 height=600>
</applet>
なんて感じで書き込むことです。

これで、Javaのプログラムファイル「***.class」を
HTML文書と同じディレクトリに置けば動きます。

この作品の場合は
「Main.class」、「Self.class」、「Balls.class」、「Balldata.class」
の4個になります。


「JavaScript」というのは
Webページを動的に変化させたり、修飾したりするのに使う「スクリプト言語」です。

この作品の場合は「index.htm」のソースの中で、
ヘッダと本文中のリンクにゴチャゴチャ書いてるのがそうです。

これで、画面サイズを調べて
“「JavaApplet」を埋め込んだWebページ”をフルスクリーンで表示させているのです。

「JavaApplet」はWebページに埋め込んで動かすって書いたけど、
当の埋め込んだページが見当たらないのは「JavaScript」で出力してるからなんです。


以上、理解できました?
説明下手もあるけど、プログラムを易しく説明するのは困難です。
分からなければ自分で勉強するしかないですね、自分もそうだったし。


プログラム的な事2

上の続きです。

今回はステージはひとつだけで、追加を出来るようにもしていません。
その代わり難易度調整が比較的簡単に出来るようにしました。

プログラムの最初のほうにゲームステージの内容を指定している部分があります。
その数値を増減してコンパイルしなおせば、新しい設定で起動します。

当然、「Java」の知識と開発環境が要りますね。
実際はそう難しいことじゃないですが。

無料の開発環境は探せばありますので
難易度調整したい人は勉強してみて下さい。


難易度調整の方法


調整で変更できるのは下の3ヶ所です。

・「Main.java」のinitメソッド。
・「Self.java」のコンストラクタ。
・「Balls.java」のコンストラクタ。

それぞれ、下のようなコメントで囲まれた部分があります。

//************調整用*********************


//***************************************

この中の変数を適宜調整します。

どの変数が何を定めているのかは中の説明を読んでください。
数値を変えながら調整して下さい。


バージョンアップ情報

2003年2月 version 1.0


どうでもいい戯言

何とかなるもんですね。
出来ましたよ、3次元空間。
ちゃちだけど。

「全て自分で作る」ポリシーなので一般の方法は見ず、
自分で考えたので独特の味が出てるかもしれません。
(つまり、下手だということです)

3次元空間を扱おうとすると考えることは色々あって、
無い知恵を絞って準備に2ヶ月かかりました。
プログラム作業に入ってからもアルゴリズムを考え直したりして、
完成に3週間かかりました。
残りは難易度調整と説明文作りでおしまい。

あとシナリオは書くのに1週間弱かかってますが、気にしないで下さい。
自覚のある人に追い討ちをかけるのは良くない事だと思います。

…と言いながらも客観的な評価が気になってしまうんですが、
「まあ、普通じゃない?」と言ってもらえれば上出来かな、自分としては。

プログラム的には前作と変わりないです。

相変わらず絵はJavaの描画関数だけです。
描画関数だけでも意外といけるもんだと密かに思いました。

BGM・効果音はフリー素材です。
フリー素材は探せばいい物が豊富にあって重宝してます。

音楽データは容量が大きくなるのが気を使うところです。
JavaAppletで再生できる形式はauです。
midiのキリのいい部分のみをモノラルにしてループさせています。
フリー素材とはいえ加工するのは可なのか気になりはします。

それにしても、タイトル画面つけるといい感じになりますねぇ。
フェードイン・フェードアウトの処理も好き。

フェード処理を加えたことでスレッドの扱いが複雑になって、一時バグが出てました。
既に解決済みですが、スレッド絡みのバグは分かりにくく扱いづらいですね。

実は玉集めを邪魔する存在を作る予定だったのですが、
ストーリー上の必然性や表現方法が思いつかなかったので没になりました。

画面表示は1秒間5フレームとしました。
シューティングと違って時間経過がのんびりしたゲームです。
前作は10フレームで処理が追いつかないところがあったので、
処理は極力軽くするようつとめました。

では、キリがないのでここまで。
プログラム内部の処理を語ると色々あるんですが…。