▼ノベルゲームツールを作っちゃうぞ!Ver3.0at GAMEDEV
▼ノベルゲームツールを作っちゃうぞ!Ver3.0 - 暇つぶし2ch892:計測部(スキャンあり)
06/12/02 23:00:49 ZjHXEGS3
procedure TOKBottomDlg.ScanBtnClick(Sender: TObject);
var
list,labels:TStringList;
start,stop:Cardinal;
line: String;
i: integer;
begin
list := TStringList.Create;
labels := TStringList.Create;

start := nowmsec;
list.LoadFromFile( FileNameLabel.Caption);
for i:=0 to list.Count-1 do begin
line := Trim(list.strings[i]);
if( length( line ) = 0 ) then continue;
if( line[1] = '*' ) then begin
delete( line, 1, 1 );
labels.Add( Concat( line, '=', IntToStr( i )));
end;
end;

stop := nowmsec;
list.free;
labels.free;
TimeLabelN.Caption := IntToStr(stop - start);
end;

893:名前は開発中のものです。
06/12/02 23:04:36 ZjHXEGS3
Delphi使うのは10年ぶりなのでちょいと無駄はあるかもしれん。
ファイルのロードにTStringList.LoadFromFileを使用したのは>>870にあわせたため。

# TStringList.LoadFromFile、ものすごく遅いな。27~28秒かかってる。

W/O Scan
 #1 28078
 #2 28687
 #3 28953
 #4 29219

W/Scan
 #1 28625
 #2 29125
 #3 29453
 #4 29719

894:名前は開発中のものです。
06/12/02 23:05:29 ZjHXEGS3
訂正:27~28秒 ⇒ 28~29秒

895:名前は開発中のものです。
06/12/02 23:16:52 ZjHXEGS3
あ、そうそう補足。
>893でも書いたとおり10年ぶりなこともあり古いバージョンのDelphiを使っている。
最近のバージョン(ってBorlandなくなったんだっけ?)ではこの時間より
速いかもしれないし、遅いかもしれない。

896:名前は開発中のものです。
06/12/02 23:55:37 lXvaYQxz
なにこの変な空気

897:名前は開発中のものです。
06/12/03 07:45:41 Pf/Dcb2V
>891-892のコードを試してみた。
シナリオファイル:約5.6MB、100000行(内ラベル10000行)
PC:Pen4 1500MHz、メモリ256MB、win2000
言語:Delphi7とTurboDelphi
timeGetTimeを使用。

Delphi7    TurboDelphi
>891 >892  >891 >892
141 250  125 187
140 250  125 203
141 250  125 203

Delphi7で110、TurboDelphiで80ミリ秒程度の差が出てる。
「起動時に全シナリオを走査して、ラベル位置を内部的に把握しておく」ってのはありかも。
ただ、上から一行づつラベルを検索するコストがどの程度かって事にもよるけど。


># TStringList.LoadFromFile、ものすごく遅いな。27~28秒かかってる。
いくらなんでも遅すぎるな、それ。
ファイルがでかいのか、Delphiのバージョンが古いのか、裏で何かが動いているのか...

898:名前は開発中のものです。
06/12/05 05:43:16 o7a/zfXd
もーにん

URLリンク(members3.jcom.home.ne.jp)

・サブルーチン(!Gosub, !Return)
・一部の画像をキャッシュしておく機能
・テキスト背景の濃度を調節できるようにした
・その他ちょこちょこ手直し

サブルーチンの使い方はソース読むなりして知れ!( `д´)甘ったれるな!氏ね!
他に目に見えないところの変更点を挙げるなら、背景の描画方法も変更してます。
お陰でちょっとだけ計算量増えた(;´Д`)
そのうち実装するであろうスプライトのZ値を考慮する形での改造。

計算量が増えたこともあって、トランジションするときはなるべく「Direct3Dを使う」にチェック入れてね。
こっちのほうが明らかに負荷が少なくてCPUにやさしいので。

ラベル検索について。
いろいろ試してくれてありがとう!
特に LoadFromFile の読み込み時間のことはあんまり考えてなかったので参考になった。
結果から計るに、やはりファイルは適度に分割してもらなくてはな。
つーかこのスレで Delphi のコードをみることになるとは思わなかったよ。
つд`)グス

長くなったので続く↓

899:名前は開発中のものです。
06/12/05 05:44:59 o7a/zfXd
やっぱり「ラベルの位置をあらかじめ把握しておく」という考え方がベストだと思う。
具体的には C++ のヘッダファイルみたいに宣言するか…、もしくはシナリオファイルを
別売のコンパイラにかけて、ラベルを抽出・定義したファイルを生成してもいい。
この方法なら、シナリオファイルを読むとき同時に対となるラベル定義ファイルを読むことで、
実行するシナリオファイルの全ラベルの位置を知ることができる。
そして実行時に余計な抽出作業をしなくてすむ。

短所として、今みたいにシナリオファイルを書いて即実行テスト、みたいな瞬発力は失われる。
ただ、実行時のパフォーマンスと天秤にかけたとき、どっちが優先されるべきか考えたら
やはり犠牲になるのはこちらだろうと。

アドバイスとして「起動時に全シナリオを走査して~」ってのを挙げてもらったけど、
そもそもラベルのデータって「ノベルクラス」が保持すべきデータだと思うのね。
こういった、できるだけデータを隠蔽しようとする姿勢が、これまで目指してきたカプセル化に
適ってると思うし(実際のコード内容がどうなってるかはともかく!)、
「データを起動時から終了時までグローバルに保持する」ってのにはちーと抵抗があるなぁ。
ノベルクラスがおはようからお休みまで存在するような構造ならいいんだろうけど…。

もちろん、上の方法で結果が出ないようなら他のどんな方法でも試さないといけないだろうな。
目的と手段を見誤らないようにしなくては。
ともあれ他の機能を充実させることのほうが先だ。やることはまだあるし!

つかなんかよくわかんあくなってきた
まだ眠いし

900:名前は開発中のものです。
06/12/07 02:47:55 SWdlq209




           そして誰もいなくなった・・・・


                             THE END

901:名前は開発中のものです。
06/12/09 09:10:42 h/zOxyeP
>>893
結局お前がバカだったって結論だな。
なんでPerlでやったの?アホは死んでね。

902:名前は開発中のものです。
06/12/09 11:38:50 jj3TKGxP
勝利宣言乙。

903:名前は開発中のものです。
06/12/09 14:08:11 8/hGWVEK
まあどっちもどっち、薄い知識を頑張って見せてもぼろは出るさ。

904:名前は開発中のものです。
06/12/10 11:45:36 OYpqnO30
うおおぉぉおおぉやる気でねえーーーーーーーーー
>>899から MainTex.Visible := False; の一行しか書いてないぜ

905:名前は開発中のものです。
06/12/11 13:35:07 ScPcGfEF
がんばれ

906:名前は開発中のものです。
06/12/12 06:12:08 yBbIoFAM
なんとかやる気出してみた。
簡易的なスプライトの表示はできるようになった。

立ち絵とか描いて
URLリンク(members3.jcom.home.ne.jp)
表示
URLリンク(members3.jcom.home.ne.jp)
文字を消した状態。画像のフチもきれい!
URLリンク(members3.jcom.home.ne.jp)
Zオーダーのテスト。フキダシはトランジションよりも上位にあるので影響を受けてない
URLリンク(members3.jcom.home.ne.jp)

スプライトの移動とか拡大とかできたほうがいいんじゃねとか考えてみた。
実際的なコードの青写真はできたつもりなので、あとは実践するのみだぜ?

つか絵とか描くの超めんどくせええええええええええええ
久しぶりにペンタブ使ったけど、最初通電しなくて壊れたかと思った
いろんなとこにガンガンぶつけてたらいつのまにか使えるようになったよ( ´∀`)

907:名前は開発中のものです。
06/12/12 08:32:57 h7Kt54mJ
おまいノベル作るより絵を上手くして公開汁と直感的に思った。

908:名前は開発中のものです。
06/12/14 05:56:41 mSVXN2jW
ここから独り言────

スプライトクラスに簡易的なタスクシステムを仕込んでみる。
複数の移動先座標を同時にプッシュすることで、複雑な動きもできるかも。
応用として、プッシュされた座標等から円運動やベジエみたいな軌跡も作れる…はず。

作ってて気付いたけど、サイズの違う画像へクロスフェイドさせるとき、
変化前の画像座標と変化後の画像座標は同じじゃ駄目なことに気付いた。
えーと、つまりスプライトを描画するとき、単純に左上の座標を基準にしては駄目だってこと。

こうじゃなくて    こうならないとおかしいよな
┏━┳─┐  ┌──┐
┃  ┃   ..│  │ ┏━┓  │
┣━┛   ..│  │ ┃  ┃  │
│      ..│  │ ┗━┛  │
└──┘  └──┘

こういうふうにしたいときもあるし
┌──┐
│         │
│ .┏━┓│
│ .┃  ┃│
└─┻━┻┘

画像がキャラクタのだったりすると、とくに気になっちゃう。
変化前の座標と変化後の座標、両方を指定しておく必要がありそう。
こんなのあたりまえの話か…。

────ここまで独り言

>>907
( >д<)、;'.・ ィクシ

909:名前は開発中のものです。
06/12/15 23:37:18 ughJgmM0
おーい、だれもいないのー?

URLリンク(members3.jcom.home.ne.jp)

・スプライト機能
・暫定的な措置として、ゲーム中にマウス中ボタン押しでコンフィグに突入
・よくわからないが垂直同期(?)ってやつを待つようにしたような気がする

スプライトできたよー。詳しくはサンプルを見ておくれ。
背景も同じようにタスク仕様っぽくしたから、組み合わせていろいろできるかも。
ちなみにエフェクト中にボタン押したりするとエフェクトカットできるよ。
けっこうよくできてるなぁ。<自分でいうな

垂直同期はどんな役割があるのかよくわからないのでそのうち元に戻すかも。

なおこのバージョンは問題を内包していることに注意。
タイトル画面の「スタート」を押したあと、マウスボタンやエンターキーなどを連打しているとリストの範囲エラーが出るの。
なんとなく原因はわかってるような。
あとこれは問題とまではいえないかもだけど、背景フェイドアウト時にスプライトごとフェイドアウトしてくれないのが困る。
うー、なんというか説明しづらいので割愛。アプリが落ちたりはしない程度の不具合ってことで。

910:名前は開発中のものです。
06/12/16 14:01:24 iJHEhuvY
>>909
立ち絵の移動中にリストのなんちゃらとか出て終了すら出来なくなってるぜwww
強制終了はできた。

911:名前は開発中のものです。
06/12/16 16:20:53 c5UW9I5g
>>910
(;゜∀゜)ウホッ
それはこちらでは再現できてないなぁ。
たぶんそのエラーは移動処理の終了と同時にで発生してるんじゃないかと推測してるんだけど。

>>909でも書いたけど、リストの範囲エラーが出てるのは確かなので、その辺を見直してみたぜ。
リストの範囲を超えた参照をしそうな場所のチェックを厳しくしてみた。
URLリンク(members3.jcom.home.ne.jp)
これは差分のみなので、>>909に上書きしてください。
とりあえずおれの環境ではエラーはでなくなったみたいです。

ついでに((((;゚д゚)))ガクブルのテストしてます。
サンプル参照。

912:名前は開発中のものです。
06/12/16 19:12:33 iJHEhuvY
エラー出なくなったよGJ!

913:名前は開発中のものです。
06/12/16 19:50:34 c5UW9I5g
>>912
おおーありがとう! よかったよかった。

不具合に気付いたのでさらに手直し。
エフェクトをかける命令において、エフェクトに要するフレーム数を指定するんだけど、
その数値が小さい場合にエフェクトスピードを x1.0 以外にしたとき表示が変になってたので直した。
URLリンク(members3.jcom.home.ne.jp)
この修正でガクブルの表示が直るはず。不具合はもうないかな?

最適化がすんだらデータの保存に取り掛かる予定。
いよいよ最終盤か…。

914:167
06/12/16 20:54:09 Q/zqu0Nt
御久し振りです、実はスランプに陥っており全く進んでおりません(´Д`)
ですが、製作は継続致しますとも…約一週間前から、製作を再開致しました。
現在、デバッグ用のシステムを製作中…それを終えたらセーブ/ロードを実装して、Ver1.0は感性でしょうか(´Д`)

915:名前は開発中のものです。
06/12/16 21:01:47 z6KIXRa8
!BgDraw Transition, -10
で余分なクリックが要求されるっぽい。

916:名前は開発中のものです。
06/12/16 21:40:28 c5UW9I5g
>>915
クッ!
所要フレーム数にマイナス値を指定するとは、なんてひどいやつだ!
ありがとう!

マイナス値が指定されたら無視するように4秒で直した。
こういうミスはまだありそうだな。
URLリンク(members3.jcom.home.ne.jp)
ちなみに !SpriteDraw はちゃんとそういうふうになってた。本当に簡単なミスだったようだ。
所要フレーム数だけじゃなくて、その他のスプライト番号とかも変な数値は弾くようになってるんだぜ。
まったく、この開発者志向・ユーザ志向には恐れいるばかりだよな!( ´,_ゝ`)

ちなみに
 !BgDraw CrossFade, 0
とか
 !BgDraw Transition, 0
みたいにフレーム数に 0 が指定されると、
 !BgDraw Immediate, 0
と同じ振る舞いをするようになってる。
Immediateは即時反映、エフェクトなしの合言葉。第二引数は無視されるぜ。

つーかマニュアルが無いのが問題だよな。
おれは作るの面倒だから、代わりに誰か作ってくれよ。無償で。何の対価も無く。非営利法人よろしく。包み込むような愛を以って。

…昨夜はあんまり寝てないせいか変なテンションだと自覚している。
今日はもう(´Д⊂ ネルポ

917:名前は開発中のものです。
06/12/18 10:18:38 TGH4Q3EG
頑張れ~

918:名前は開発中のものです。
06/12/20 00:43:20 fK7YcqYj
URLリンク(members3.jcom.home.ne.jp)

・背景の描画方法がちょっと変更? 少し面倒になった
・!SpriteLoad/!SpritePos においてスプライトのサイズ・座標を即座に反映させるようにした
・キーボードのボタン設定ができるようになったかも

今回もソースは見難いぜ。気をつけろ。
最適化するとか言っといてこれじゃあ、立つ瀬がないってものよ。
命令名と定数名が衝突したりしてるし。分かりづらい。
おまけ機能のボタン設定は、キーの重複チェックをしてないので変なことしないように注意な。

ところでスプライトを動かすとき、垂直同期?って奴を待ってないとティアリングが発生するみたいだ。
もう! なんなのこれは! ばか!
たいした処理じゃないのになんでこうもうまくいかないのか。

あとちょっと聞きたいんだけど、フルスクリーンからウィンドウモードに復帰するとき、
他のウィンドウが左上に寄っちゃうんだけど、これどうしたらいいの?
再現性があるんだかないんだか…、なるときもあるしならないときもあるから困ってるんだけども。

919:名前は開発中のものです。
06/12/20 01:08:52 8V7aEVfE
EnumWindows
GetWindowPlacement

920:名前は開発中のものです。
06/12/20 22:22:22 CA5iLqvy
>>918
URLリンク(gamdev.org)
俺がむかーし作ったのあげる。適当に使ってちょ。著作権フリー。

921:名前は開発中のものです。
06/12/23 17:50:46 vy9OXCiI
>>919-920
やっぱ自分で何とかしないとだめかー、めんどいよな。
ときに、どういうときに左上によってしまうのか、いろいろ試しているうちに分かってきたぞ。

 (1)ウィンドウモードで起動⇒フルスクリーンモード⇒ウィンドウモード
これはほとんどの確立で左上に「寄らない」。しかし、

 (2)フルスクリーンモードで起動⇒ウィンドウモード
この場合、ほぼ100%左上に寄ってしまうようだ。

んで、教えてくれたウィンドウを列挙して状態を復元して…、ってのをやってみたけど、どうにもうまくいかないぜ。
具体的には、位置は復元できるけどサイズが元に戻らない。
復元するタイミングを変えてみたりしたけどうまくいかなかった。
もしかしたらDirectXでスクリーン解像度を変更してるのが原因なのかもしれないなぁ。

もうあれだ、この不具合は気付かなかったことにしてセーブ・ロードを作り始めちゃうか。

922:名前は開発中のものです。
06/12/25 00:14:40 8rnjShSU
おとなしく以下の手順でヤレ。

全画面化
(1) 画面全体を覆うサイズでTOPMOSTのウィンドウを表示
(2) Direct3D初期化(解像度変更)

ウィンドウ化
(1) 画面全体をDirect3Dのオーナウィンドウで覆った状態で解像度元に戻す
(2) ウィンドウサイズを戻す

923:名前は開発中のものです。
06/12/25 23:15:12 EgMygRvY
あー、だめだ
完全に詰まった感がある。

ちょっと悩む時間をくれ…。

924:855
06/12/27 18:21:13 U+WOWC8d
サンプルタイトル画面の背景を動きのあるフィルムに変更。
実際にフィルムを作る部分の解説を少し追加しました
ヘルプのチュートルアル-作ってみる-演出をつける。に簡単な解説があります。
もしくは、nnnExe.exeを実行し、
[NEW GAME] - [チュートリアル] - [タイトルのバックスクリプト]で動く解説が確認できます



925:vvm-man
06/12/29 03:01:49 tgdf+svf
スクリプトの実行速度を改善してみた。
と言ってもコンパイラ側で連結をするようにしただけだが。

あと、画面構成がどれくらいカスタマイズできるかやってみた。

いつもの(デフォ)
URLリンク(f58.aaa.livedoor.jp)
ちょっといじった画面+地震スクリプト実行
URLリンク(f58.aaa.livedoor.jp)


926:名前は開発中のものです。
06/12/29 03:11:45 zUVxDgus
>>925
相変わらずすごいなー

擬似ウィンドウにしてるのは意味あるの?
例えば、ツール類が横に来るとか

表示画面は中央固定でもよくない?

927:vvm-man
06/12/29 03:31:45 tgdf+svf
>>926
サンクス。
擬似ウィンドウは今のとこ大した意味はないなぁ。
ただ、ゲーム画面の大きさを固定してるないと、作り手側が画像の配置やら、文字の開業やらの計算が出来ないからって理由ですな。
あーあと、これのメリットとして、ウィンドウ自体をモジュール化してAPIのようなもんにしてるので、やろうと思えば、一つのブラウザ画面に複数のゲームのウィンドウを立ち上げることも可能っちゃあ可能かな。
ただ、そうするとゲームのシステムの殆どを大域で制御してやってるので、互いに不具合起きないように組むのが面倒だろうな。

あと、中央固定にしないのはぐりぐり動かせるのを自慢したいのと、
無料レンサバ使ってるので、広告への配慮。

無料レンサバでもプロバイダに文句を言われずに、ジャンジャンバリバリ動くゲームを作るってのがコンセプトの一つなので、広告邪魔と言われてもそこは譲れない。

928:名前は開発中のものです。
06/12/29 04:43:12 zUVxDgus
個人的にはweb上でこれだけ動かせるなら使いたいね
ぜひがんばってもらいたい

929:名前は開発中のものです。
06/12/29 09:14:47 nhf1Rnll
>>924ってどっかのコピペ?それとも本物のたいにゃん先生?

930:名前は開発中のものです。
06/12/30 00:32:41 3VaFPP0X
おらああああああああ仕事納めきたぜーーーーーーーーーーーー
ロバートがクリスマス休暇でブリテンに帰っちゃったのでなにかと大変だったぜ!
氏ねよプロテスタント野郎!ファックユアジーズだぜ

セーブロードは12%ぐらいできた。
いまデータ読み込み用の手続きを各クラスに仕込んでいる最中だ。
もうなんか超つまんねえ作業だしすげえ面倒だ。心が折れそう。
ところでひとつのデータサイズが3MBぐらいになるんだけどこいつをどう思う?

>>921の問題は、なにやってもうまくいかないのでもう後回しだ。
そのうちソース晒すので、試行錯誤のあとをソースから読み取ってほしい。

今やってる作業は一段落つくまでもうしばらく掛かるから、公開できるのは先になると思う。
書き込みがなくなるかもしれんが、投げ出したりはしないつもりなのでそのときまで正座して待っていてほしい。

つか>>924これすごくね?
ツールもそうだけど、とくに猫語へのこだわりが。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch