説明



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


始めに

この作品のテーマは「エンターテイメント」でした。
作成当時やったシューティングゲームで良作がありまして、

こんなのを自分でも作ってみたいぞ!
どれだけ面白くて、楽しくて、カッコいいことが出来るかやってやろうじゃないか!!

と若気の至りが暴走した結果がこれです。


プログラム的な事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」、「Enemy.class」、「Others.class」、「Back.class」
の5個になります。


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

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

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

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


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


プログラム的な事2

上の続きです。


「JavaApplet」では「パラメーター」というもので情報を渡せます。
外からプログラムに対して指定が出来るということですね。

こんな感じで指定するんですけどね。
<applet code="***.class" width=800 height=600>
<param name="***" value="***">
</applet>

この作品の場合、ステージ番号を指定してます。

「index.htm」のソースを見ると
各ステージへのリンクで、ステージ番号を「JavaScript」の関数に渡してますよね。
渡された番号はヘッダの部分で「JavaApplet」の「パラメーター」として出力されてます。

分かります?


肝心の各ステージの情報はプログラムファイルの中にあります。
外から番号を指定してそのステージを表示させています。

ステージ情報がプログラムファイルの中ということは、
ステージを追加するにはプログラム内に新しいステージの情報を追加しなくてはいけない、ということです。

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

無料の開発環境は探せばありますので
ステージ追加したい人は勉強してみて下さい。


ステージ追加の方法

「Main.java」の最後の方に初期化メソッドがあります。
private void format(){
}
です。

その中にswitch-case文
switch(stage){
case 1:							//ステージ1
	//全体
	def=9;	times_max=10;
	back_color=new Color(254,180,71);
	//自分
	dist=12;	life_max=5;
	s_del=60;	s_uni=5;	s_num=5;
	//敵
	num_e=10;	e_max=8;	e_min=4;
	e_del=500;	e_uni=5;	e_num=8;
	//その他
	num_o=20;	o_max=8;	o_min=4;
	//BGM
	bgm=getAudioClip(getDocumentBase(),"audio/33333.au");
	break;
というのがあります。
ここに新たなステージ番号で情報を加えればいいです。

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

あとはパラメーターでステージ番号を指定するだけです。


バージョンアップ情報

2003年1月 version 1.1
・フルスクリーンが可能に
・敵の出現を改善
・一時停止の機能を追加

2002年3月 version 1.0



どうでもいい戯言

こんな、時間的要素が絡んでて、音楽も使ってて、
絵も必要になるようなものは初めてだったんで、試行錯誤の連続でした。
勉強にはなったけど。

「C++」辺りで作るといいんだけど、仕事でそんな余裕ないなんて言い訳して
手軽な「Java」で作ることにしたあたり、完全に逃げてますね。

ともかく作るにあたって考えることは色々あって、
まず、絵と音楽をどうするか。


ドット絵を描こうとも思ったのですが面倒でやめました。
労力ほどにいいものが出来そうにないし
ダウンロードに時間がかかることになるし。

描画は全て「Java」の描画関数の組み合わせです。
それにしては上手く出来たと思う。


BGMと効果音はフリー素材から持ってきました。
「JavaApplet」で再生できる形式は「**.au」のみなのでソフトで変換。
再生方法も知らなかったので調べました。

音楽ファイルはサイズが大きくなります。
ある程度ダウンロードに時間がかかるのは仕方ないです。


問題は処理時間。

シューティングだと一秒間に何回書き直せばいいのか。
沢山のオブジェクトを同時に動かし、当たり判定もすると
処理が追いつかないかもしれない。

注意しながら処理を増やしていきましたが
割と大丈夫なことに気付きました。

でも安心してどんどん処理を加えていったら
結果として重たくなってしまいました。

軽くしようと思いましたが今更無理でした。
きっちり理論的に固めた処理は省略できません。

書き直しは1秒間10フレームです。
画面の大きさやCPUパワーによっては
処理が追いつかず表示がガタつきます。
無念。


残りは、できた「JavaApplet」をどう表現するか。
単純にブラウザに載せただけではカッコよくない。

そこで「JavaScript」の登場。
シンプルなHTMLでは出来ない表現ができる。

version 1.0 では余計なバーを消して、それっぽいウィンドウ表示にしました。
version 1.1 では進歩させて、フルスクリーンが可能になりました。
フルスクリーンにすると市販のゲームみたいです。


結果的には、予想以上の出来栄えになって大喜び。
そりゃ一般のゲームとは比べ物にならないけど
素人が初めて作ったにしては上出来ではなかろうか。



Version 1.0 に付けていた解説の文書

必要ないけど、作った当時の生の感情が出ているので
思い出として残しときます。

解説

ふと思い立ってシューティングゲームというものを作ってみました。
初めてにしては割ときちんとした物が出来て驚いています。
思ったより簡単に作れるものです。

構想1日、ゲーム基本部分の製作が約1週間、
ゲーム全体の構成に1週間(合計2週間)でとりあえず完成。

当然、ストーリーに乗せた方がいいだろうということで、
1週間(合計3週間)でシナリオを付けました。

ゲーム自体はJavaAppletで作っています。
パラメーターでステージ番号を指定するとそのステージが出ます。

とりあえず3ステージ(+9ステージ)を用意してあります。
ステージを増やすには、初期化メソッド内の指定部分に新たな情報を追加することで出来ます。
新たな情報とは、そのステージの背景色・BGM・移動スピード・攻撃の細かい設定などです。

難易度はその追加した情報(ステージごとに指定した内部の変数)で決まります。
上の3ステージの設定では易しすぎるかもしれません。
(自分自身シューティングが苦手なので、どの程度難しくしたらいいのか分かりません)

絵は使わず全て描画関数を使っています。
効果音とBGMはフリー素材を利用しました。
BGMは500〜700KBありますのでダウンロードに時間がかかります。

別ウィンドウでの表示はStyleSheetとJavaScriptで実現したので、
古いブラウザでは上手く表示できないかもしれません。

読み直すと、今でも当時と比べて全然成長していないことが分かります。
駄目じゃん。