▼ノベルゲームツールを作っちゃうぞ!Ver3.0at GAMEDEV
▼ノベルゲームツールを作っちゃうぞ!Ver3.0 - 暇つぶし2ch839:691
06/11/14 06:12:43 CtgyW8K3
っと
今ふと思いついたが、!if 文の中で !goto とか !Linker が呼ばれたらifのネストが無茶苦茶になるな
うわどうしよう、これは困ったぞ

840:名前は開発中のものです。
06/11/14 09:52:42 Gp2dNbIi
>837
*start

!if "1/0=2"
ほにゃらら
!else
ふにょらら
!endif
!TextDraw
!cw

!if "false and ( true and 1/0 )"
へにゃらら
!else
ひにょらら
!endif
!TextDraw
!cw

841:名前は開発中のものです。
06/11/14 09:57:23 Gp2dNbIi
おっと、true/falseは先頭大文字。結果は変わらんけど。

842:691
06/11/14 13:57:56 CtgyW8K3
( ゚д゚) <ムシャムシャ

>>840
テストしてくれてありがとう!

!if "1/0=2" //ここで0除算エラーでてます。この行は無かったことにされる・・・
    ほにゃらら 
!else 
    ふにょらら 
!endif 
!TextDraw 
!cw 

!if "false and ( true and 1/0 )" //げ本当だ
    へにゃらら 
!else 
    ひにょらら 
!endif 
!TextDraw 
!cw 

二番目のほうは問答無用でFalseを返さなくちゃいけないのにな。
マーカーの挿入方法がおかしいのかも。帰ったら見直してみる。
つーかこの程度の不具合、開発段階で気づけよって話ですが。やはりおれは一度首吊る必要があると思う。

あと、評価の途中でなんらかのエラーが出たら、対応する !endif までジャンプさせないとだめだな。
っていうか、これもできていて当然の動作なんだよなー(;´Д`)

843:691
06/11/14 23:03:53 CtgyW8K3
おっす

> 評価の途中でなんらかのエラーが出たら、対応する !endif までジャンプ
> マーカーの挿入方法がおかしい

ってのを2秒で直した。2秒で直した。
あとスクリプトの1行目が空行だとエラーが出てたのでそれも直した。
今後のうpは、もっとしっかりデバッグしてからするようにします(;´Д`)

844:691
06/11/16 00:04:27 nP5t6MYc
改めて

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

・and や or を使った if の評価式の結果がおかしかったので修正
・if の評価式の文法がおかしかったりしたとき!endifまでジャンプするようにした
・スクリプトの最初のほうがが空行だとエラーが出てたので修正
(・Read Meにこのスレのことを書き忘れてたので追加テヘッ)

問題のif文だけど、いろいろなパターンを試したし、耐久テストもやったからもう大丈夫だぜ!(たぶん)
とはいえ、まだ>>839の問題を含んでいるので、if 領域内でラベルジャンプしないようにしてくだちい
あー、どうすっかなこれ…。

845:691
06/11/18 07:30:59 MpWhpoQC
URLリンク(members3.jcom.home.ne.jp)

・変数を展開してテキストとして出力できるようにした( !Text )
・数値型変数の計算簡略化のための !inc !dec 命令を実装した
・タイムウェイトの引数に式が使えてなかったので修正
・二重起動を禁止した
・命令検索の順番を変更してちょっと高速化?

変数の展開は
  !var Hoge, 5
  !var Hage, True
  !var Hige, 'あいうえお'
  !Text "Hoge+Hage+Hige"
これを実行すると「5Trueあいうえお」と出力される。
普通のテキスト出力は今までどおり命令名なしでいけるぜ
なんでこんなこと(専用の命令を用意したか)になったかというと

  1.変数を含まないテキストのほうが圧倒的に多いだろうということ
  2.なるべくなら計算式を展開するコストを抑えたいという欲求

を考慮した結果である。もふもふ。
どうしても気になるなら !Text を、変数を含まないテキストでも使えばよろし。

!inc !decはDelphi互換です。数値型引数も渡せます。知らん人はこの際Delphiを勉強してみよう。
最後に、Read Me に高慢ちきな利用規約を書いてみたので読んでみてね。
うあわああーーこんなじかんだもういかなくてはあ

846:名前は開発中のものです。
06/11/18 12:24:46 aH09oUml
*start
!var Foo 3
!inc Foo
!Text Foo
!TextDraw
!cw
Foo/
!TextDraw
!cw
!Text Bar
!TextDraw
!cw
Bar/
!TextDraw
!cw
!inc 4

--End.
!TextDraw
*end
!goto *end

847:名前は開発中のものです。
06/11/18 12:27:27 aH09oUml
っと、!inc 4は要らなかった。

848:691
06/11/18 22:02:24 MpWhpoQC
ありゃ、>>845は不具合があったやつの修正前のをうpしてたみたい!
inc/decで明示的に引数渡さないとだめになってるね。

こっちが本命でつ。失礼しまつた。
URLリンク(members3.jcom.home.ne.jp)

(* !inc/!decの使い方講座 *)
  1. 整数型変数を宣言します
  2. !inc/!decの第一引数に整数型変数を渡します
 (3. このとき第二引数に整数式を渡すと、その数だけ加算/減算されます)
  4. ヤター

なお、第一引数の整数式に宣言されていない変数が記述されていると
エラーが発生し、その命令がある行をスキップします。
第二引数が整数型でない場合も同様にスキップします。
以下インクリメントのテスト。

//整数型変数の宣言
!var 変数, 0
*label1
  //変数の値を文字列に展開します
  !text "'変数の値は' +変数 +'です'"
  //5だけ加算します
  !inc 変数, 5
  !TextDraw
  !cw
  !@@
!goto *label1

849:691
06/11/18 22:08:34 MpWhpoQC
>>846
thx!

> !inc Foo
文法は正しいですがアプリケーション側の不具合で動作してませんでした。(´・ω・`)ゴメソ

> !Text Bar
ここで定義されていない変数Barが参照されているので構文エラー発生。スキップ。

> !inc 4
4は変数ではないのでエラー。スキップ。

> *end
> !goto *end
無限ループに突入してます。大ピンチ。

850:846
06/11/18 22:20:38 aH09oUml
URLリンク(gamdev.org)
・★のとこで一回余分に(つまり3回)クリックが要る
・何故かBか消える
・さらに何故かその後字が黒くなる

851:691
06/11/18 22:48:06 MpWhpoQC
>>850
y=ー( ゚д゚)・∵. ターン
毎度毎度すまん!
!Text のエラーが出たときの処理がまずかったようだ!
    ∧∧
   (  ,,)
   /  |
 ~(__)
URLリンク(members3.jcom.home.ne.jp) (差分のみ)

852:691
06/11/18 22:50:47 MpWhpoQC
後ろに余計なものをつけたおかげでURLが変だな
URLリンク(members3.jcom.home.ne.jp)

853:691
06/11/20 23:09:13 TCoOZXSp
コンフィグ画面が手狭になってきたので改築してみた
もうなんか自由すぎる
URLリンク(members3.jcom.home.ne.jp)

854:名前は開発中のものです。
06/11/21 06:01:22 xZAgq/Gk
どうせならエフェクトの時間を半分にするもつけてくれ

855:名前は開発中のものです。
06/11/22 04:20:28 ay/jEsPR
エフェクトのヘルプ画像を、多少追加してみました
キャプチャーしてペイントで保存していくだけでも
時間けっこうかかった。これでヘルプ3割ぐらい終わったかな
システム用のダミー画像の差し替え中で絵そのものが入っていないため
exeは、スクリプトを動かす部分以外は正しく動作しない部分があります

SYSTEM-NNN
URLリンク(www2s.biglobe.ne.jp)




856:691
06/11/23 21:46:47 2iFawqr+
今日は中華街でイチャイチャした。
肉まん1個500円とか超高くね?

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

・コンフィグ画面からスクリーンモードの変更をできるようにした
>>854の機能
・「スキップ中はSEを再生しない」って項目

とりあえず動くバージョンなので最適化してない。
今日のソースの汚さは異常。

コンフィグ画面改造にあたっていろいろいじってたら、新たな問題が発覚した。
現在再生中の SE に対して音量を 0 にすると何故だか知らんが音量が MAX になる。
あとBGM/SEともにフェードアウト中に音量を変更するとこれまたおかしくなる。
いつでもコンフィグ画面を出せるのが原因なんだけど、なるべくならこの機能は残したい。。。
なんだよもうめんどうくせえな

つか、もう DDSD 使いたくないなぁ…。BASS に慣れると使いづらいかも。
音量はいちいちデシベルに変換せないかんし。

857:名前は開発中のものです。
06/11/24 10:56:25 GqXnQfEk
>>855
トップの真っ赤な背景にビビリました

858:名前は開発中のものです。
06/11/25 16:50:50 CHSI80wS
>>855
誤爆の誤爆?
選考スレに書き込んでなかったっけ?
>>857
HPのことなら、こっちでは深緑を薄めたような、明るめの緑色に見える。

859:名前は開発中のものです。
06/11/26 19:36:59 AAKyS3Pm
また手狭になった。
スクロールバーも小さくしてみたんだけどなぁ。
URLリンク(members3.jcom.home.ne.jp)

けっきょく、音再生ライブラリを全部作り直した。
> 現在再生中の SE に対して音量を 0 にすると何故だか知らんが音量が MAX になる。 
> あとBGM/SEともにフェードアウト中に音量を変更するとこれまたおかしくなる。 
も直ったですよ。
1フレームあたりの計算量(しかも少数の計算)は増えたけど、このくらいならまぁいいかって感じ。
固定小数使ったら負荷軽減したりするかな。

リファクタリングとかバグ取りもいい加減飽きてきたし、そろそろ自由スプライト表示でも作ってみっかー

>>855
それ破片エフェクトってどうやってるんだろう
一枚の画像をバラバラに切り分ける方法が思いつかん

860:名前は開発中のものです。
06/11/26 20:24:42 DQKfrVBZ
ぱっと見、ボロノイ図っぽく見えるけどどうかな。

861:名前は開発中のものです。
06/11/27 11:23:31 wQG9Jm5U
>>857
おまえそれブラックTAINYANじゃね?
おめでとう。かなり運が良かったぞ

862:vvm-man
06/11/28 07:40:05 aGW5KWsL
URLリンク(f58.aaa.livedoor.jp)

や、お久す。

まぁ、黙って色々更新はしてたんですけどね。
とりあえず、大分前の話だけど、ページの読み込みをAjax的にやってみました。
ちょっと読み込みが早くなったかも。

で、最近、System.jsの中を調整してMacサファリで結構まともに動くようになったす。

それに加えIE7に正式対応。
Opera、不具合ありだが、動作自体は可能。

あと、ツールとは関係ないけど、サンプルの人物紹介、月夜の立ち絵を更新しました。
ノートPCのタッチパネルで描いたわりには綺麗に描けたと思います。


863:名前は開発中のものです。
06/11/28 08:12:08 yrb7qqAX
クリック待ちと改ページのアイコンは逆の方がいいんじゃね?
セーブできないなら予想プレイ時間を書いておく。
ネクロマンサーってタイトルを書くんじゃなくて「ゲームスタート」とか「はじめから」と書く。

864:名前は開発中のものです。
06/11/28 22:09:16 B8ch4/XT
真っ黒
何も表示されないまま2分が過ぎた
あと1分したらこのカップラーメンが出来上がるだろう

865:vvm-man
06/11/29 02:36:40 Kyo0fD77
>863
そうね。

>864
ブラウザとか言ってくんねぇとわかんねってば。


ただ、あんまし安定して動作してくれない兆候はありそう。

866:名前は開発中のものです。
06/11/29 02:58:39 GrMuZBJF
>>865
スレイプニル2.49とIE6
ノートンの馬鹿が邪魔してた
両方動いた

ブラウザでここまでできるとは驚きだ

867:名前は開発中のものです。
06/11/29 17:11:37 J2RQ6icy
>>ノートンの馬鹿が邪魔してた
これはなんとかしんと…

868:vvm-man
06/11/29 18:23:08 Kyo0fD77
(‘・ω・`)ノートン先生はなんて言ってブロックするの?

869:名前は開発中のものです。
06/11/29 19:13:51 GrMuZBJF
>>868
単に.jsの実行結果をポップアップ広告と誤検知するみたい
「広告ブロック」と「ポップアップ遮断」を無効にすると実行できるようになった
JSはよくわからんので技術的なことはアドバイスできない(´・ω・`)ゴメンネ

870:名前は開発中のものです。
06/11/30 05:57:02 8fYVUZ8f
URLリンク(members3.jcom.home.ne.jp)

・サウンドライブラリを書き直した
・選んだ選択肢をログに記録するようにした
・その他覚えてないほどいろいろ最適化

主にリファクタリング。1フレームの計算量はかなり減ったと思う。
一通り試験はしたつもりだけど、もしかしたら何か問題あるかも。
それにしても更新速度が前に比べて落ちてるなぁ。
これから忙しくなるからもっと落ちるかも試練…。年内には完成できると思ってたんだけどな。

ここからチラ裏────
ところで、そろそろサーバ容量が圧迫されてきたので、以前のバージョソは消そうと思いまつ。
現在サーバ上に置いてあるのは novel14~ です。
これよりマイナーのバージョソ(novel1~)をご所望の方は個人的にでも連絡ください。
思いつく限りの種種の方法でアーカイブを送りつけまつ(`・ω・´)b
ここまでの変遷をみてると結構感慨深いものがあるだぜ。
─────ここまでチラ裏

>>860
調べてみたけど全然理解できなかった(;´Д`)
でもたしかにそんな感じだね。

871:名前は開発中のものです。
06/11/30 06:02:11 6MmDDvnh
エラー出るんだけど。

872:名前は開発中のものです。
06/11/30 06:02:38 8fYVUZ8f
ああそうだ、いつかお知らせしなきゃと思ってたんだけど、
「しねきゃぷしょん」っていうフォントがあるとおれと同じ環境(>>752参照)になります。
今のところ使うフォントをこれに指定してるので使ってみるといいかも。
もしこのフォントが入ってないと「MS Pゴシック」になると思う。

873:名前は開発中のものです。
06/11/30 06:09:13 8fYVUZ8f
>>871
工 エ エ ェ ェ (゚Д゚; ) ェ ェ エ エ 工
ぜひ詳細きぼん!

つーかレスはやっ!

874:名前は開発中のものです。
06/11/30 06:20:30 6MmDDvnh
あ、直ってる。さっきはクリックしてもダウンロードできなかっただけ。

875:名前は開発中のものです。
06/11/30 23:29:49 8fYVUZ8f
サブルーチン機能を組み込んでみた。案外簡単にできたなぁ。
サブルーチンに飛んだ先でさらにサブルーチンに飛ぶこともできる。
実質2億回のネストが可能。

ラベルジャンプには、その名のとおり目的地となるラベルが必要だけど、
このラベルを検索するコストが気になってきた。上から一行づつラベルを探しているのが問題だ。
添付のサンプルシナリオぐらいの規模ならまだしも、これが5000行、あるいは1万行クラスの
規模になったとき、今のやり方ではかなりの検索コストを支払う可能性がある。

解決方法として、
 1: ラベルの行番号をプロトタイプのようにあらかじめ宣言しておく
 2: そもそもラベルを廃止して、行番号のみでジャンプ先を指定するようにする
 3: 一度通ったラベルは記憶しておく。二回目からの検索は高速になる
とか考えてみた。

1,2 はともに強力だろうけど、シナリオに不備があったときの修正で、
行番号がずれる可能性を考えるとイマイチかなとも思う。
3 は根本的な解決になってないので駄目。

どうしたらいんだー!
とりあえず後回しにしておこう。

876:名前は開発中のものです。
06/12/01 16:54:57 7vJA/jaU
起動時に全シナリオを走査して、ラベル位置を内部的に把握しておく
もしくはシナリオを暗号化するときラベル位置を把握しておき、それをどっかに紛れ込ませるとか?
どっちも「手軽さ」からはちょっと離れてしまうが

877:名前は開発中のものです。
06/12/01 20:34:51 cfQDTSNd
シナリオファイルを複数に分ける

878:名前は開発中のものです。
06/12/01 23:52:23 3ltBEf8r
画像キャッシュを有効にするかどうか選べるようにした。
いまのところキャッシュを有効にすると、最大でVRAMを22MBぐらい占有するようになる…。
ノベルゲームで22MBも使うってのはどうなの?(;´д`)
おれ普段ゲームしないからよくわかんないや。これって高スペックなんだろうか。

>>876
ん、結局のところ、そのあたりに落ち着くんだろうな。
あとはどうやって実装するかの技術的な話になるってだけで。

>>877
現状でシーンごとの管理や、単にファイルサイズの肥大化を防ぐ目的としてシナリオの分割はできるように作ってあるけど、
これをさらに発展させて行数制限するってのもひとつの手かもなぁ。
ただ、サンプル程度の内容ですでに200行越えだから、簡単に5000行とか超えてしまいそうな気もする。
シナリオを書くとき、常に分割を念頭においておかなきゃいけないのが手間になるんじゃねとか思ったり。
行数制限ってのは結構厳しい縛りになるんじゃないかと。
これはプレイヤーではなくて製作者側の都合だけどね。

879:vvm-man
06/12/02 06:07:38 reS/o3fC
テキストをそのまま読み込むんでなく、中間ファイルでテーブル構造をしたものを作れば?
>>876
が提案した起動時に、ってんだと起動が遅くなるじゃん。


んで、こっちの開発の話。
人物紹介画面でキャラを背景の前に立たせて見ました。

IE6,Opera,FireFoxでは不具合はなし。
何かあったら教えてください。

>>869
ポップ……それは心当たりないけど、広告はなんか分かるかも。
報告39th。

この板じゃあJavaScript分かる人って少ないよねー。

880:名前は開発中のものです。
06/12/02 08:19:43 ZjHXEGS3
>879
> >>876 が提案した起動時に、ってんだと起動が遅くなるじゃん。

測ってみた?
手元のマシンで以下の条件でラベルスキャンの有無で約40msecしか違わなかったが。
条件が変わったとしても1000倍遅くなると言うことはまあ無かろう。
# 40msecを起動が遅くなるとして問題があるというなら止めはしないが。

[計測条件]
対象スクリプト:ランダム生成したスクリプト10万行、内ラベル10001行(10%)
PC:AthlonX23800,メモリ4G,FreeBSD6.0R
プログラム言語:Perl5
計測方法 timeコマンド、4回実行で最初の1回を捨てた3回の平均値

881:vvm-man
06/12/02 08:56:26 reS/o3fC
>>880
いや、測ってない。
その程度か。

普段扱ってる相手がJavaScriptなんで過剰に高速化を意識してしまったよ。

882:名前は開発中のものです。
06/12/02 11:06:34 4YZh1zne
> PC:AthlonX23800,メモリ4G,FreeBSD6.0R
(;^ω^)

883:名前は開発中のものです。
06/12/02 17:10:41 346dJ8KD
つーか、Perlで測ってどうすんだよボケ。
まるで意味が無いベンチマークだ。

884:vvm-man
06/12/02 17:37:57 reS/o3fC
何だ。
実際のツールで測ってねぇ上に、そんな怪物マシンかよ。
朝だったんでよく読んでなかった。

885:名前は開発中のものです。
06/12/02 17:39:24 ZjHXEGS3
>883
阿呆はおまえだ。言語が違ったところで高々プラスマイナス2桁ほどしか違わん。
"起動が遅くなる" といえるほど遅いわけでないことを立証する程度にオーダーが
わかれば充分なのだから問題は無い。

886:名前は開発中のものです。
06/12/02 18:11:32 ZjHXEGS3
あ、そうそう補足。
スクリプト読み込み時スキャンが問題となるほどのことは無い、と言うだけで
中間言語化が悪であるとは言ってないので念のため。

# ネットワーク越しなら通信速度がおそらくボトルネックになるだろうから
# 圧縮可能なら中間言語化してその際ついでにラベル解析るのは
# むしろ妥当と思われます。

887:名前は開発中のものです。
06/12/02 20:05:11 8NIJ4z5J
>言語が違ったところで高々プラスマイナス2桁ほどしか違わん。
2桁って事は40msec→4000msecだな。大きく違うように思えるんだが。

せっかく計ってくれたんだが、やっぱり実際のツールでないと意味が無いぞ。


888:名前は開発中のものです。
06/12/02 22:35:44 346dJ8KD
>>885
ドアホかお前。知能0だな。

どんなPerlのプログラムで測ったのかも示さない糞が。
それでベンチマークとったつもりなんだから笑える。

お前のような糞は黙って死ね。

889:名前は開発中のものです。
06/12/02 22:53:47 zKHoHUMu
ID:ZjHXEGS3さん、薄い知識をフルに使っても…^^;

890:名前は開発中のものです。
06/12/02 22:59:15 ZjHXEGS3
>887 と言うわけでDelphiで書いて謀ってみた。
入力データは880と同じ内容だが、改行コードはCRLFに変換したものを使用した。
以下の条件で約480msec差。

[計測条件]
対象スクリプト:ランダム生成したスクリプト10万行、内ラベル10001行(10%)
PC:PIII866x2,メモリ2G,W2K
プログラム言語:Delphi
計測方法 GetTickCount、4回実行で最初の1回を捨てた3回の平均値

>888 論破されたら別理由でっちあげか。必死だな。


891:計測部(スキャンなし)
06/12/02 23:00:05 ZjHXEGS3
procedure TOKBottomDlg.NoScanBtnClick(Sender: TObject);
var
list:TStringList;
start,stop:Cardinal;
begin
list := TStringList.Create;
start := nowmsec;

list.LoadFromFile( FileNameLabel.Caption);

stop := nowmsec;
list.Free;
TimeLabelS.Caption := IntToStr(stop - start);
end;

892:計測部(スキャンあり)
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