Home>戻る

〜第18章 最適化〜

ゲームは処理落ちしない事が大事です。
今までのプログラムでは、イベントの読み込み部分に無駄がありました。
そのままだと回線の遅い環境だとロードに時間がかかります。
これを改善すべく修正しました。

大きなバッファを用意して、最初にイベントが発生したときにそのバッファにスクリプトの内容を一括してロードする方法を用いました。
// バッファに一気に入れる
public void LoadFileToBuffer( String filename ){
	int i, x = 0;
	InputStream is = null;

	try{
		is = classLoader.getResourceAsStream( filename );
		Reader r = new BufferedReader(new InputStreamReader(is));

		while((i=r.read()) != -1){
			gl_event_file_buffer[x++] = (char)i;
		}
		is.close();
	}catch(IOException e){}

	// 最後に-1を入れる
	gl_event_file_buffer[ x ] = 0xff;
}
また、今回からコンパイル済みのクラスファイルと画像やスクリプトなどの外部ファイルを1まとめにアーカイブするようにしました。
コンパイルコマンドは以下です。
jar -cvf herod.jar *.class *.gif eventdata/*.dat eventscript/*.txt eventtable/*.txt mapdata/*.dat
詳しくはjarコマンドで調べて下さい。
jarファイルのリソースを読み込むために、getResourceAsStreamというClassLoaderクラスのメソッドを使いました。

それから今までのことを総合してサンプルゲームを作りました。
こちらです。

<プログラム公開>
FirstRpg.java

プロジェクト一式ダウンロード(データ含む)