AS3でノベルエンジン作ろうぜ

理由は二つ。
1.割と暇してるので
2.遊ぶ金がないから
そんな気になってきた。


探してみるとFlashでノベルゲーム作ってる人は割といるし、既にエンジンもあるんですね。


・LemoNovel AS2のノベルエンジン
http://www.le-mo.jp/lemo/products/LemoNovel/

・THE EARTH ショートFLASHノベル
http://mofuya.com/flash/the_earth.htm

・むきりょくかん。 ごがつのそら。 ほしのの2本
http://mukiryokukan.sakura.ne.jp/


AS3は描画以外がまともになったおかげで裏であれこれやれるようになったため、俺みたいなへっぽこプログラマでノベルエンジンくらいは動かせそう。
なので目標

  • 完成させること
    • 途中で投げ出さないのは無理だからちゃんとコメント書いて復帰できるようにすることw
  • XMLでシナリオを書くシステム
    • ただし一部かえるかも(読み込みに面倒な部分があるから。)
    • 改行
    • 改ページ
    • クリック待ち
    • スピード調整
    • wait
    • 選択肢
    • 文字色変更
  • セーブロードは完成してから考える。
  • トランジション
  • キャラクタはとりあえず表示できればいいや
  • そのほかエフェクト
    • 画面揺れ
    • 後はとりあえず後回し。
    • 後回しで。あんまたいしたことはできなさそう。鳴るくらいは暇つぶしに入れても良いか。
  • システム
    • 開始終了程度で。
  • フラグ
    • 立てる、おろすの二つと立っているかどうかの判定
    • パラメータ増減も後で考えてみたい
  • 最後に
    • TIPS入れたいなー。街みたいな。
    • マップ使って女の子の居るところに移動して会話するのも入れたい。ゲームっぽく見えるし。
    • パラメータ増減させるなら、その日の冒頭に主人公の行動を入力してときメモ風もいい。


じゃ完成試写会は今年中で。

FlashDevelopのASファイルテンプレートを変える

FlashDevelopで新規クラスを作成するとこんなコードになる。

package foo.bar 
{
	
	/**
	 * ...
	 * @author DefaultUser (Tools -> Custom Arguments...)
	 */
	public class Hoge 
	{
		
		public function Hoge() 
		{
			
		}
		
	}
	
}

個人的に

public class hoge{

派なので毎回これを直すのは面倒くさいのでテンプレートを書き換える。
場所は
C:\Documents and Settings\ユーザ名\Local Settings\Application Data\FlashDevelop\Templates\ProjectFiles\AS3Project
のClass.as.fdtファイル。
これを以下のように直す。

package $(Package) {
	//
	public class $(FileName) {
		public function $(FileName)() {
			$(EntryPoint)
		}
	}
}

改めて新規クラスを作成すると以下のように表示される。

package foo.bar {
	//
	public class Hoge {
		public function Hoge() {
			
		}
	}
}

うん。満足。

ARMは未だ来ない

なので今月は他部署がやってたFlashの仕事をしこしこやってた。
既に時間がない状態だと聞いていたから大変なのかと思ったら結構時間にゆとりがあってあれこれ遊べた。
これから結構こういう仕事がアルっぽいのでiアプリで作ったライブラリを移植してみよう。
AS3はAS2に比べて圧倒的に計算速度が速いおかげで多少無茶な書き方してもなんでもなく動いてくれて楽しい。

for(var i:int = 0 ; i < len ; i++)hoge[i].draw(g);

こういう事ができないのがAS2できるのがAS3。
AS3なら普通にゲーム作れそう。


しかしほんとARMいつ来るんだろうか。
なかったことになるんじゃなかろうかと少し不安。

ARMが来ない来ない来ない

シコシコBREWing


どうなってるのかは未だ良く分かりませんがARMコンパイラはまだきません。
締切も伸びたとだけ伝わっていて、具体的にどうなってるのかはわかりません。


とりあえずシミュレータ上で動けばいい的な流れだけど
「さぁ! シミュレータ上で動いたしコンパイラ来たから明日が締切ネッ!」
とか言われそうで怖い。




昨日塩を買った。
以前買った塩がどっか行ってしまって、それいら毎度毎度買い忘れ続けていたんだけどついに思い出して購入。
家に帰ってさぁどこにしまおうか? と悩んでいると、冷蔵庫横に磁石でくっつけた小物入れを発見。
ここがちょうどいいや〜と思ったら、ホコリを被った以前の塩が。
見つかるタイミング悪すぎるなー。

X3360でエンコ

X3360(Q9550同等)を買ったのでエンコしてみた。
Pentium4 2.4Cだった頃は毎日毎日エンコしてたけどここ数年は離れていたのでどの程度パワーアップしたのか気になっていた。


環境は
CPU:X3360(2.83GHz)
MEM:DDR800 2GBx2
M/B:P5K PRO
HDD:7200回転のやつ


使用ソフトは
DVD2AVI 1.76
Avisynth 2.57
VirtualDubMod 1.5.10.2


スクリプトはこれだけ
#====================ここから====================
LoadPlugin("C:\Program Files\AviSynth 2.5\plugins\mpeg2dec.dll")
MPEG2Source("F:\temp\VIDEO_TS\test.d2v")
AudioDub(last,WavSource("F:\temp\VIDEO_TS\test.wav"))
Trim(1, 52125)
Auto24FPS(true, 24, 16, "", false)
Crop(12, 0, 698, 480)
LanczosResize(640, 480)
#====================ここまで====================
DVD2AVIでd2vとwavに分離した者をmpeg2dec.dllつかってavisynth経由でVirtualDubModで読み込み。
29分にカットして、24fps化して、クロップして、4:3にリサイズするだけ。
今回は速度を気にしてるのでフィルタとかは気にしない。


出力は
VIDEO:DivX6.8.3 1pass QT3
AUDIO:LameACM 48000Hz 192Kbps CBR
VirtualDubModの出力設定は Fast recompress


結果は7:35!!
やべー。すげぇはえぇ。
再生時間の4倍弱で完了してる。
フィルタかましてもそこそこで済むんだろうね。
ここまでくるとDVD読み込むまでの時間の方がよっぽどかかるのがちょっと笑える。
ちなみに同ソースをaviutlはカット24fps化クロップリサイズで20分。
こっちも悪くない。

追記
中途半端なソースをやめてDVDのFLCL3巻 23:58のソースに変えた。
結果は5:40
単純にクロックあげて速くなるとすると、3.6GHzくらいまであげると4分半くらいで終わるんだろうか。