▼ノベルゲームツールを作っちゃうぞ!Ver4.0at GAMEDEV
▼ノベルゲームツールを作っちゃうぞ!Ver4.0 - 暇つぶし2ch322:167
08/09/15 14:21:58 RanEnJ2T
個人的にはNScripter>吉里吉里です、扱い易いのが非プログラマには良いでしょうし。
今のところ、ライブラリ側では自由度を高くしておきスクリプト側で制限をかけるというのが一番いいかなと思っております。
(吉里吉里のKAGとかはそんな感じっぽいですね)
なので、今後はそういった方向で開発していこうかと思っております。

323:167
08/09/25 20:57:34 9u2Ww/ne
DAT落ち防止を兼ねて報告を。
今現在、AbyssLibのコーディングを六割方終わらせました。
今現在までに行ったことは、
・全ソースコードの見直し:いくつかバグを発見し修正(追加要素でエンバグする可能性大ですが)
・文字列の拡張:テキスト、発言者名、文字列スプライトなどでタグを用いて文中でフォントなどの変更が可能に。
・ルビ:文字列の拡張に伴い、ルビの使用が可能に。ルビでもタグを用いて文中でフォントなどの変更が可能です。
・音声を実装:SE、BGMに加えて音声関連のメンバ関数をサウンド用デバイスクラスに実装しました。
今後は、
・DefOut:現在、定数は#defineで定義していますがそれを外部ファイルから変更可能にします。
・シーンのクラス化:既読履歴、環境設定などのシーンをクラス化してNovelPlayerクラスから分離させます。
・オブジェクトファイルの追加ロード:オブジェクトファイルを追加で読み込むことが可能になるようにします。
といった感じです。AbyssLibの変更に付随して他も変更しなければなりませんし…恐らく、来月末ぐらいまではかかるかと思われます。

324:名前は開発中のものです。
08/09/30 09:40:04 eJlk0agD
文字のフォントをいじれるのはいいですね
太文字とか使いたいし

325:名前は開発中のものです。
08/10/21 22:07:40 dVrZK8u0
>>321
そもそも行間のサイズを行の文字列から計算するのはどうなんでしょうか。

326:325
08/10/21 22:10:54 dVrZK8u0
ルビと文字をかぶせたい場合に備えて、
ルビと文字の間隔は指定できた方がいいかもしれません。
このあたりはTexとか吉里吉里を参考にするといいと思います。

327:167
08/10/22 22:49:32 quMdw/pV
月末にAbyssLibだけでも公開できればと思うのですが…間に合うのかなぁ?(;´Д`)

>>325
行間のサイズを行の文字列から計算すると言いますと?
ちなみに今現在の使用は「ライブラリ側では行間を一切考慮しない」です。
行間に関する処理は全て非ライブラリ側(DLL)側に委任し実装させます。
現在のところ、ルビと文字の間隔は指定可能です…裏技めいた方法で、ですが。
その辺の仕様はDLLで吸収し、何の変哲もない間隔指定をスクリプトに追加する予定で。

328:名前は開発中のものです。
08/10/23 13:37:25 j1MYmFLI
>>327
> 行間のサイズを行の文字列から計算する
表示する段階でおそらく一行分の文字情報(文字の幅や高さなど)はすべてそろってると思うので、
そこから一行の高さを計算するということです。
つまり、一番縦に長い文字が行の高さを決定します。

329:名前は開発中のものです。
08/10/23 23:11:20 FH2BlMc9
リーディングも計算してあげて下さい。

330:名前は開発中のものです。
08/10/24 08:56:00 CgrY7nMS
というか、yaneSDK使ってるのなら、
CTextFastPlane オブジェクトの UpdateTextAA() 後に
行の高さと幅が決まるので、
GetSize でその値をそのまま持ってくればいいのかもしれません。

331:167
08/10/24 22:40:22 kr1qcbwb
>>328
各行の縦幅(高さ)はその方法で算出していますね、問題は行間(行と行、行とルビ)なわけで…。
>>329
リーディングとは何でしょうか?
>>330
ScriptPlayerのグラフィック機能とサウンド機能にyaneSDKを使用しておりますが、
AbyssLibそのものにはCとC++とWindowsAPIのみを使用しております。
yaneSDKをAbyssLibそのもので使うと、yaneSDK必須になってしまうわけで…。

332:167
08/10/24 22:56:09 kr1qcbwb
なんだか曖昧な話をしてしまっているような気がしますので、今現在における文字列の実装を以下で説明致します。
拡張された文字列に関わるクラスは、以下の通りです。

RubyTextToken
ルビの文字情報(字単位) 格納する情報は、
テキスト、サイズ、カラー、フォント、透過度、ボールドか?、イタリックか?、横幅、縦幅

RubyTextTokenLine
ルビの文字情報(行単位) vector<RubyTextToken>に縦幅と横幅の取得関数を付加したようなもの

TextToken
テキストの文字情報(字単位) 格納する情報は、
テキスト、サイズ、カラー、フォント、透過度、ボールドか?、イタリックか?、横幅、縦幅、ルビ

TextTokenLine
テキストの文字情報(行単位) vector<TextToken>に縦幅と横幅の取得関数を付加したようなもの

TextTokenSection
テキストの文字情報(文単位) vector<TextTokenLine>に縦幅と横幅の取得関数を付加したようなもの

RubyTextTokenSectionはありません、実装しようかとも考えたのですが深く考えると脳味噌が死にそうなので止めましたw
(実装した場合、ルビを改行したりといった変態的なことが可能にはなるのですが)

333:名前は開発中のものです。
08/10/24 23:03:27 CgrY7nMS
>>331
UpdateTextAA云いはyaneSDKの場合の説明ですが、
大抵のシステムでは文字の幅と高さを得る何らかの方法があるので
yaneSDK必須ということにはなりません。
あと、ルビについては、確かに大きなサイズを設定するとレイアウトは狂ってしまうかもしれませんが
普通はそういうことはしませんし、そういうことをして表示が少し変になっても多分誰も気にしないと思うのです。
単純に、
[その行で一番長い文字の高さ] + [その行で一番長いルビ文字の高さ] + [ルビがあるならルビと文字の間隔] + [何らかの固定マージン]
で行の高さを決めるのはどうなんでしょうか。

334:167
08/10/25 15:13:29 CxRTKNsw
拡張された文字列を描画する処理は、以下の通りです。

1.以下のような文字列があったとします(「ばら」および「すいしょう」はルビです)
 ば ら
 薔 薇
 すい しょう
  水  晶

2.以下のような変数を使用します。
 x, y:文字列全体の描画位置(左上隅)
 dx, dy:文字の描画位置(左下隅)
 drx, dry:ルビの描画位置(左下隅)

3.変数の初期化を行います:dx = 0, dy = 0, drx = 0, dry = 0

4.dx = 0, dy += 「薔薇」の縦幅(「ばら」の縦幅を含む)

5.「ば
  薔」を描画します。
 5-1.(x+dx+(「薔」の横幅>「ば」の横幅 ? 0 : (「ば」の横幅-「薔」の横幅)/2), y+dy-「薔」の縦幅)に「薔」を描画します。
 5-2.drx = dx + (「ば」の横幅>「薔」の横幅 ? 0 : (「薔」の横幅-「ば」の横幅)/2)
 5-3.dry = dy - 「薔」の縦幅
 5-4.「ば」を描画します。
  5-4-1.(x+drx, y+dry-「ば」の縦幅)に「ば」を描画します。
5-4-2.drx += 「ば」の横幅
 5-5.dx += 「薔」の横幅>「ば」の横幅 ? 「薔」の横幅 : 「ば」の横幅

6.「ら
  薇」を描画します、処理は5.と同じです(「ば」→「ら」、「薔」→「薇」)


335:167
08/10/25 15:15:19 CxRTKNsw

7.dx = 0, dy += 「水晶」の縦幅(「すいしょう」の縦幅を含む)

8.「すい
   水 」を描画します。
 8-1.「水」を描画します、処理は5-1.と同じです(「ば」→「すい」、「薔」→「水」)
 8-2.drx = dx + (「すい」の横幅>「水」の横幅 ? 0 : (「水」の横幅-「すい」の横幅)/2)
 8-3.dry = dy - 「水」の縦幅
 8-4.「す」を描画します。
  8-4-1.(x+drx, y+dry-「す」の縦幅)に「す」を描画します。
8-4-2.drx += 「す」の横幅
 8-5.「い」を描画します、処理は8-4.と同じです(「す」→「い」)
 8-6.dx += 「水」の横幅>「すい」の横幅 ? 「水」の横幅 : 「すい」の横幅

9.「しょう
   晶 」を描画します。
 9-1.「晶」を描画します、処理は5-1.と同じです(「ば」→「しょう」、「薔」→「晶」)
 9-2.drx = dx + (「しょう」の横幅>「晶」の横幅 ? 0 : (「晶」の横幅-「しょう」の横幅)/2)
 9-3.dry = dy - 「晶」の縦幅
 9-4.「し」を描画します、処理は8-4.と同じです(「す」→「し」)
 9-5.「ょ」を描画します、処理は8-4.と同じです(「す」→「ょ」)
 9-6.「う」を描画します、処理は8-4.と同じです(「す」→「う」)
 8-7.dx += 「晶」の横幅>「しょう」の横幅 ? 「晶」の横幅 : 「しょう」の横幅

こうすることで一文字単位でのサイズやカラーやフォントの変更が可能となり、文字の下端は確実に揃います。


336:167
08/10/25 15:21:08 CxRTKNsw
この実装だと字間・行間を調整する項目がありませんが、
縦幅と横幅を持った空のテキストトークンを挿入することで調整は可能です。
(実装上、下にしか間をもうけられないので最上行のルビの上に間はもうけられませんが)

>>333
WindowsAPIにありますね、AbyssLib内部ではそれで縦幅と横幅を得ています。
ルビに関しては考えすぎかなとは思います、ただ考えておかないと予想もつかない使い方をする方も世の中には居られるでしょうし…。
行の高さは、今現在は[その行で一番長い[文字の高さ+ルビの高さ]]で実装しています。間隔や固定マージンは上記のように実装する形を予定しております。

337:名前は開発中のものです。
08/10/25 23:05:50 eaoIqs7r
>>336
ああ、なるほど。結局、1文字とルビをセットにして、
・X座標はその文字とルビで横幅の短い方が長い方の中心にくるように
・ルビのY座標はその文字の真上になるように
各文字を描画していくということですね。
たしか、吉里吉里も同じようなことをしていたと思います。

338:名前は開発中のものです。
08/10/31 17:11:53 /pTuS2sL
ざっと命令眺めてみたんですが、立ち絵のクロスフェードが無いような気がします…

それと、つい10日前ほどから自分用の2Dのゲームライブラリを作っているのですが、
もし使えるところまで完成したら、ためしに組み込んでもらえませんでしょうか?


339:名前は開発中のものです。
08/10/31 18:27:49 umSO+5+k
どんだけ図々しいんだ・・・

340:167
08/10/31 19:36:53 J4+1Cdpc
拡張された文字列に字間と行間をもうける方法ですが、
以前に例に使った文字列(薔薇水晶(ばらすいしょう))を使って説明しますと、
1.字間(薔薇水晶の字間)
2.ルビ字間(ばらすいしょうの字間)
3.最上行のルビの上(ばの上)
4.最上行のルビと文字の行間(ばと薔の行間)
5.最上行の文字と次行のルビの行間(薔とすいの行間)、最上行と次行の行間(ともいえる筈)
6.最下行の文字の下(水の下)
とまず分類できます。
1.空のテキストトークンを挟めば簡単に字間をもうけられます
2.1.と同じです
3.仕様上不可能です(下にしか行間をもうけられないため)が、特に必要ないでしょう(多分)
4.ルビの縦幅をもうけたい行間の分だけ大きくします、そうすることで描画位置が上に上がり下に行間がもうけられます
5.4.と同じです
6.4.と同じですが、特に必要ないでしょう(多分)
こんな感じだと思われます、理論上………まだ、コーディングが完全に終わってないのでテストしていませんが(駄目じゃん)
このモデルで現在問題となっているのは、「複数文字に複数ルビを均等に割り当てることができない」ということです。
ひとつのテキストトークンに複数文字を収めることで理論上可能ではありますが、ただし文字送りの際に
その複数文字はひとつの文字とみなされて一気に出力されてしまいます(文字送りの問題があるから一文字単位で分割したわけで)
まあ、これは「鬼畜(きちく)」とかを表示する場合「ち」をどうするのかという問題上必ずしも悪仕様とはいえないわけですが………。

>>337
はい、そんな感じですね。
こうやってノベルゲームのライブラリを作ってると、Nスクと吉里吉里のガイドは必携です。
(萌え絵だったりするのd持っていると微妙に恥ずかしかったりしますが)

341:167
08/10/31 19:39:01 J4+1Cdpc
>>338
画面の更新はupdateという命令で一括で行うようになっています、それにクロスフェードを指定する引数がありますので。
詳しくはヘルプおよびサンプルを参照して頂ければと。

そうですね、より多くの動作実績を積みたいのでゲームライブラリへの組み込みは歓迎です。
ただ、その際に「ここが組み込みにくい!」とか「ここをこうしてほしい!」とかが出来れば欲しいのでご自分で組んで頂ければ嬉しいです。
ですが私が組み込んでも「組み込みにくい!」とかは感じられるかもしれませんので、ライブラリ開発の合間を縫ってではありますが
希望されるのであれば組み込みも承ります。その場合は、ライブラリの仕様とかを分かりやすいよう提供して頂ければと。

342:167
08/11/13 19:02:06 0ic4ACTC
なかなか作業が進まない、以前よりも時間は取れている筈なのに………orz

細かく作ってると色々と仕様に悩んだりもして、そういうのが大きい一因だったりもしますが(汗
たとえば、今現在選択肢を作り直しているのですが………。
選択肢のインターフェースとして表示する画像を、通常時、
カーソル時、ホールド時(上でマウスボタンがホールドされている状態のこと)と用意したとします。
で、カーソル時には通常時の位置から右に1ドット下に1ドット移動したように見せます(凹みを表現するため)
この場合、マウスカーソルの判定矩形は
1.通常時と同じ判定矩形
2.判定矩形を右に1ドット下に1ドットずらす
3.両方の判定矩形を合体させる
という方法があるわけです、とりあえずは1で設計してますが…。

343:167
08/11/20 15:44:26 MlFmxeHF
大分作業が進みました、今週末にはアップロードできそうです(といってもAbyssLibのみですが…)
あとはノベルエンジン本体のみ………!それにしても、ボトムアップでコーディングしていると途中の閉塞感が半端ないですね。

344:167
08/11/23 22:22:26 SovwNul/
まだ作業途中ではありますが、アップロードすると言った手前もありますし一部アップロードしてみます。
残るはNovelPlayer、NovelPlayer2、BasicCommands、サンプル等々………。

URLリンク(abysslib.hp.infoseek.co.jp)


345:167
08/12/03 14:34:22 Ci35IGPz
|
|Д`) ダレモイナイ・・
|⊂  ホウコクスルナラ
|   イマノウチ

というわけで、進捗状況を報告してみます。
現在BasicCommandsに取り組んでおります、とりあえずVer1.200(with Ver1.070)は今週末にでも出せそうです。

346:名前は開発中のものです。
08/12/03 18:36:09 I9P09qK4
いやちゃんとチェックしてるよw

347:167
08/12/06 01:18:30 SivC+o41
>>346
おお、人がおられましたか!
チェックして頂けるだけでもありがたいかぎりなのですm(_ _)m



今週末に出すと申し上げましたが、間に合わなさそうな予感が………(急用が入ってしまったので)
現在デバッグ中、とりあえずはAbyssLib Ver1.200 + BasicCommands Ver1.07でリリースする予定です。

変更点を記しますと、
AbyssLib
・細かいバグを修正
・名前空間を導入
・演算子の拡張
 単項と多項に分離:+、-
 新規追加:^、~、!、|=、&=、^=
 変更:!=(旧<>)
・汎用クラスの追加
 vector_mystr(文字列の動的配列)、RubyTextToken(ルビテキスト(字単位))、
 RubyTextTokenLine(ルビテキスト(行単位))、TextToken(テキスト(字単位))、
 TextTokenLine(テキスト(行単位)、TextTokenSection(テキスト(文単位))を追加
・汎用関数の追加・削除・変更
 削除:EditText
 追加:SaveStringVM、SaveTextTokenSection、LoadStringVM、LoadTextTokenSection
 変更:IsOpenedFile(非エクスポート関数に)
・TextTokenSectionにより、文字列管理の方法を変更(テキスト、発言者名、スプライトテキスト、既読履歴)
・今までマクロの書き換えでしか変更できなかった要素を動的に変更可能に
 最大Z、最小Z、予約済みZ座標、ログの最大保持数、テキストウインドウのインターフェース、
 ルビのフォント、ルビのサイズ、テキストの最大横幅/最大縦幅、発言者名の最大横幅/最大縦幅
 テキストカーソルのインターフェース、選択肢のテキストのサイズ、選択肢のテキストのフォント、
 選択肢のテキストの最大横幅/最大縦幅、選択肢のテキストのカラー(通常時、カーソル時、クリック時)

348:167
08/12/06 01:23:50 SivC+o41
・選択肢関連のメンバ関数をTaskManagerからDrawManagerに移す
・SoundManagerにvoice関連のメンバ関数を追加
・DrawManagerからマウスカーソル関連のメンバ関数を削除
・各種シーン(通常、既読履歴、セーブ、ロード、環境設定、メニュー)をクラス化
 今まで関数として実装していたものをクラス化、継承によりより平易にシーンのコーディングが可能に。
・オブジェクトファイルの追加読込が可能に

BasicCommands
・今回、変更点は一切ありません!
 つまり、ソースコードレベルでのバージョンアップはあってもスクリプトレベルでのバージョンアップはありません。
 理由としてはそこまで作り込むと(ただでさえ四ヶ月も時間使ってるのに)リリースが更に遅れること、
 DLLの方まで大きく弄るとデバッグが困難になるからです。とりあえずはVer1.06との完全互換ということで。
 (厳密には演算子の変更により完全互換ではありませんが)



バグフィックスを終え次第、
・禁則処理
・タグの導入(テキストの文中でサイズやフォントを変更可能に、ルビなども)
・複数分割(長すぎるテキストを複数のテキストに自動で分割)
・表示位置調整(センタリング等)
・画面更新、画面効果の新規追加
・voice関連の命令を追加
・その他色々(for~next)など
といった感じのバージョンアップを行います。

349:167
08/12/06 01:24:54 SivC+o41
それを終えた後には、ドキュメントとサンプルの制作を行う予定です。
大規模アップグレードは今回が最後だと思われます………多分、きっと、そう信じたい(;´Д`)

350:167
08/12/08 17:47:16 78vP/8Ya
演算子のコンパイル処理が少し難航しています…。
それさえ直れば出せる状態(他は全部テスト済み)なので、明日か明後日には何とか…。

351:231
08/12/09 00:31:56 wZAstprl
久々の登場だぜ。
サンプルなら俺が続き書こうか?

352:167
08/12/09 15:41:40 /ec++oQN
デバッグ&テストが完全に終了しました!
今夜にはまとめて上げられるかと思います(ヘルプの再構築にはもう少し時間が掛かりますが)

>>231
ありがとうございます、書いてくださるのは大歓迎です。
以前の続きでも、新たなものでも歓迎ですので。

353:167
08/12/10 03:09:47 AjsWE5Kg
一応、今夜中ということでぎりぎりセーフでしょうか(;´Д`)
とりあえずはうpしてみます、WEB等の整理は明日からということで…。

URLリンク(abysslib.hp.infoseek.co.jp)

354:167
08/12/12 22:18:55 bYq3EUKY
今日中にWEBを更新しようと思ったが間に合わない予感がひしひしと………orz
まあ、八割方書き上げてますので明日には何とかなるでしょうけれど。

355:167
08/12/13 23:12:14 DDn1ptq5
なんか日記帳になっているような気がしないでもない感じが…。
新たに見つかったバグ修正に時間がかかっていました、恐らく明日にはきっと多分………。

356:名前は開発中のものです。
08/12/14 01:53:58 sKoU+e8z
わははw 楽しみにしてるよw

357:167
08/12/14 14:31:22 VFAvExy4
漸くテストを終え、アップロードしました!

今後の予定は………
1.ADVサンプルを最新版に対応させる(簡単な筈、バグがなければ…)
2.最新版のバグフィックス(1でバグが発見された場合)
3.BasicCommandsのアップグレード(禁則処理やタグ対応など)
といった感じです。

その後は命令を追加しつつ、サンプルを作っていければと…。
もう大規模なアップグレードは勘弁です_(。Д。)_

358:167
08/12/14 14:32:10 VFAvExy4
URLを付け忘れていたので…。

URLリンク(abysslib.hp.infoseek.co.jp)

359:167
08/12/16 23:52:59 ONuq9PqZ
進捗報告です。

案の定、バグが見つかりましたorz
テキストとテキストカーソルにまつわる根深いものです…。
現在バグフィックス中、それを終えたらアップグレードを進める予定です。

360:167
08/12/18 23:33:59 0tP/NWTQ
アップグレード完了しました、これでめぼしいバグは消えた筈…?
ただ、いくつか気になる点はあるのでそれは次回修正ということで。
次回はAbyssLibは若干の修正、BasicCommandsはインターフェース系命令の追加+テキストのタグ&ルビ対応になるかと思われます。

URLリンク(abysslib.hp.infoseek.co.jp)

361:167
09/01/06 21:56:54 nU3QTrEZ
あけましておめでとうございます、保守兼ねて経過報告をしておこうかと。
現在、今年度末までに完成を目標に鋭意コーディングを行っております。
今週末~来週末に公開予定です、現在30命令の追加を予定しております。

362:167
09/01/16 22:31:00 cvJFcqo9
経過報告です、現在34命令の追加を終えデバッグを行っております。
残るバグはあとひとつ…!土曜は用事により作業を進められそうにありませんが、日曜までにはアップグレードできるかと思われます。

363:167
09/01/18 01:49:47 30EBq5bL
デバッグ終了!これで今のところ見つかったバグは全て取れた筈………!
明日(もう今日ですが)にはアップロードする予定で頑張りますので!

364:167
09/01/18 23:24:23 30EBq5bL
アップロードしました!
現在、ウェブページは更新しておりませんが(まだ編集中です)
既に最新版をDLできます。リファレンスなどの更新もまだですが、サンプルが更新されていますので。

URLリンク(abysslib.hp.infoseek.co.jp)

365:名前は開発中のものです。
09/01/19 02:55:17 NS8A7eFv
乙~

366:231
09/01/19 15:57:15 zAW60pSD
よし、じゃあ話書き始めるか。
しばし待たれり。

367:167
09/01/20 21:11:23 yIGVGx3p
サイト(+オフラインヘルプ)の更新を終えました!

今回のアップグレードによる変更点は、
AbyssLibは
    ・立ち絵の優先順位の不具合を修正
    ・オブジェクトファイルの追加読み込みの不具合を修正
    ・GETSYMBOLをGETSYMBOLNAMEに変更

    ・BaseDrawManager::DrawRect関数の仕様を変更
    ・NullDrawManager::DrawRect関数の仕様を変更

    ・BaseDrawManager::_DrawRect関数を追加
    ・NullDrawManager::_DrawRect関数を追加
    ・INovelEngine::Initialize関数を追加
    ・NovelEditor::Initialize関数を追加
です。Ver1.201との互換性はありません(少し修正すれば動きますが)

BasicCommandsは
    ・スプライトテキストの不具合を修正
    ・voicevolume、playvoice、stopallvoice、stopvoice、loadvoice、unloadallvoice、unloadvoice、
     charaspace、textposition、textmaxwidth、textmaxheight、talkerposition、talkermaxwidth、
     talkermaxheight、textcursorshow、textcursornone、textcursorclick、textcursorgonext、
     textcursorbacklog、textwindowdraw、textwindowimage、selectwindowdraw、selectwindowimage、
     selectwindowunderspace、selecttextfont、selecttextsize、selecttextmaxwidth、selecttextmaxheight、
     selecttextncolor、selecttextccolor、selecttexthcolor、selectclickse、selectcursorse、initializeを追加
です。


368:167
09/01/20 21:40:23 yIGVGx3p
より分かりやすく説明しますと、
・音声関連の命令が追加された(今はse相当の命令しかありませんが)
・レイアウト関連の命令が追加された(テキストウインドウ等のカスタマイズがコーディングを経ずに行えるようになった)
といった感じです、複雑なカスタマイズを行いたい場合はコーディングを経る必要がありますが…。

今後の予定としましては、
1.Ver1.080としてテキスト関連の命令を大量に追加する
 今まで手をつけてこなかったテキスト関連の命令(タグ・ルビ等)を大量に追加する予定です。
 今のところ考えているのは、
    ・禁則処理
    ・表示位置調節(字間、行間、センタリング)
    ・ウエイト、カラー、表示速度、サイズ、フォント、ルビ
 といったところです。文中に立ち絵変更タグを埋め込めるとかも良いかもしれません(考え中)
2.Ver1.090として画面更新を大量に追加する
 今は画面更新に限られたものしかありませんが、それらを大幅に追加する予定です。
 今のところ考えているのは、
    ・シャッター(上下左右)
    ・カーテン(上下左右)
    ・スクロール(上下左右)
 といったところです。
 また、汎用的な画面効果ではありませんがプラグイン作成のサンプルも兼ねて
 桜吹雪、雪、雨、蛍などの画面効果もお見せする予定です。
ここまで行うと、NScripterに大分近付けるかと思います。

369:167
09/01/20 21:51:43 yIGVGx3p
………大口叩いたようで怖いので補足しておきますと、コードの最適化(最低動作環境)、
モノクロ、マスクパターンを用いた画面更新、動画の再生などNScripterに劣るところはまだまだあります。
これは私の技術力の問題もありますが、組み込み前提のライブラリとしていることで「尖った」処理をライブラリ内に
組み込むことが困難なのも一因です。マスクパターンを用いた画面更新を一例にしますと、マスクパターンというのは
ピクセル単位の処理が必要になります。それをGDI(使う人は今時いないかな?)、DirectX、OpenGLなどのグラフィックス
ライブラリ(およびyaneSDKのようなそれらの補助ライブラリ)で簡単に組み込めるよう抽象的で直感的で汎用的なコードを
書くのは極めて難しいです。必ずどこかで無理が出てきますし、個々に特化したコードを書いた方が速度も確実に速いでしょう。

とはいえ、模索してみるよりも前に諦めるのも何でしょうし、
1と2を終えた時点で色々と模索してみる予定です。特にマスクパターンを使えると大きいでしょうから。

というわけで、
3.適宜バグフィックス、サンプル作成、「尖った」処理の組み込みを模索、要望に応じ新規命令を追加
といった感じになるかと思われます。2まで終わらせるとほぼ完成ということですね。

結構過疎ってますが、要望などは随時受け付けておりますので(´Д`)

370:167
09/01/22 17:58:02 IhANlxha
ADVサンプルを最新版対応に更新しました。

URLリンク(abysslib.hp.infoseek.co.jp)

371:167
09/01/26 02:18:37 ynCjmsaz
経過報告~。
現在、テキストの禁則処理とタグ・ルビの実装を行っています。
禁則処理は思っていたよりもずっと簡単で実装しデバッグも完了、
タグも現在実装中ですが今週前半には実装およびデバッグを終えられそうです。
恐らく今週末には公開できるんじゃないかなと………ただ、一連の処理でノベルエンジンが重くなりそうなのが懸念するところではあります。
(最適化は現在想定している命令を全て実装し終えてから行う予定です)

372:231
09/01/27 23:36:12 KYwumhzm
ふう、永久規制解除された。
今回のテーマは鬱ゲーごちゃ混ぜでいってみようかと思うんだ。
ホワイトで永遠なデイズだぜ(タイトル未定)


長くなりそうなんで忘れた頃にやって来るよ。

373:名前は開発中のものです。
09/01/29 18:25:47 SQf2/3Zp


374:名前は開発中のものです。
09/01/29 21:09:30 xqc1Yyrx
ageないと落ちる板でもないだろに

375:167
09/02/02 00:21:19 GLHf4EFM
マニアイマセンデシタ(カタカタ
バグはおおむね潰せたのですが、新たなタグの案が出るわ出るわ………。
公開は今週末に延期します、といいつつ今週前半あたりで公開してしまうかもしれませんが。

376:231
09/02/03 02:42:58 8DxvJwQ9
鬱ゲーの方は時間がかかるんでかわりにうp。
前回提供した話を小説として再構築した。読むにはOOoが必要

URLリンク(gamdev3.hp.infoseek.co.jp)

377:167
09/02/16 19:15:48 5uqmw6lW
現状報告です~…すみません、スランプ入っていてなかなか進んでおりませんorz
残るはテキスト表示速度の変更と待機、タグの命令化あたりです。今週末には間に合わせたいと思いますが…かなり怪しいです。

378:167
09/03/10 18:18:40 6BBIQUrc
お久しぶりです、忙しかったりスランプに陥ったりと開発が進行しておりませんでしたorz
が、ようやくテキスト周りが完成しました。サンプルなどを作成し、今週末までにはなんとか上げたいと思いますっ!

379:167
09/03/14 00:52:44 VZCXz39y
お待たせしました!…待ってた方が居たかはさておいて、と自分でしても虚しいツッコミを入れつつ。
BasicCommandsVer1.080、ようやく上がりました!

アップグレードの内容は、
・タグ命令を実装
・禁則処理を実装
・字間、行間、揃えを設定する命令を追加
上記の三つです、ちなみに今回AbyssLibには手を加えておりません。

タグ命令の実装によって、表現の幅が広がったのではないかなと思います。
次回の更新では画面効果や画面更新を増強し、以後はサンプルを上げていく形でいこうかなと思います。

ほぼ完成系と考えておりますが、欲しい機能等ありましたらリクエストあればお応えしますので!

URLリンク(abysslib.hp.infoseek.co.jp)

380:名前は開発中のものです。
09/03/15 18:53:09 UMEg0+0q
>>379
住人そのものが少ないこの板で報告するよりもvectorなどの配布サイトなりに登録した方が
もっと反応があると思うけど。。。。

381:167
09/03/26 21:48:58 A+IOHfQ7
現在の開発状況です、
画面更新の種類を追加中でNScripterでいうカーテンとシャッターを実装しました!
あとはスクロール、時間制限選択肢、揺れの改良、あたりを行ってからアップロードする予定です。

382:167
09/03/26 21:50:01 A+IOHfQ7
>>380
まだ完成には至ってないので、公開するわけにもいかず…。
もうすぐで、一応納得いくところまではいけるとは思いますが。

383:167
09/04/23 22:01:14 Q24jFjlE
保守です、社会人って時間がとれませんよねorz
ぼちぼち開発しております……五月中旬ぐらいには、アップロードできるかと。
上記に挙げた機能の他に、色々とささやかな機能を追加したりしていなかったりします。

384:167
09/05/30 23:02:55 5hhdziBP
久々に保守兼ねて、一ヵ月近くとあるバグに悩んでおりましたがようやく解決しました(´Д`)
まさか、ソースコードの方でなくスクリプトの記述ミスだなんて……orz
ともあれ、ぼちぼちと尚も開発は続行しております。報告遅れましたが、次バージョンは6月中旬の公開を目指しております。

385:名前は開発中のものです。
09/07/05 23:00:11 oMzkeICb
AndroidかiPhoneとかの変態組環境でエンジン作ってるドMはいないの?
OSのないDSとかさ。

386:名前は開発中のものです。
09/07/11 10:22:13 iXR2PxQZ
>>385
ここは違うの?
iPhone用のゲーム作ってるやついる?
スレリンク(gamedev板)
NintendoDS(NDS)非公式開発 Part3
スレリンク(gamedev板)


387:167
09/07/20 21:10:16 JA4VY8P5
お久しぶりです、仕事とスランプにやられておりました(´Д`)
現状は、新バージョン公開にあたって実装すべき機能を全て用意し終えたところです。
残るはテスト&デバッグ&サンプル作成&マニュアル作成です、来週~再来週中の公開を目処に頑張ります。

388:167
09/08/10 18:15:14 VxqqgNIh
お待たせしました、延期に延期を重ねましたがようやく新バージョンの公開です!

更新内容を以下に記します
AbyssLib
・描画タスクの種類に「矩形」を追加
・画面更新(通常時)を上書き可能に変更
・環境設定の保存/読み込みをプラグインにて拡張可能に変更
・ローカルデータの保存/読み込みをプラグインにて拡張可能に変更
BasicCommands
・スキップの待機時間を変更する命令を追加(waittimeskip)
・禁則文字を設定/追加する命令を追加
 (setleadingchs、setfollowingchs、setfollowingweakchs、addleadingchs、addfollowingchs、addfollowingweakchs)
・新規画面効果を追加(flash2、quakex2、quakey2、quakexy2、quakex3、quakey3、quakexy3)
・新規画面更新を追加(update2)

以上のような感じです。

389:167
09/08/10 18:24:36 VxqqgNIh
次回更新の予定としましては、
・新たな画面効果を更に追加
・新たな画面更新を更に追加
・制限時間付きの選択肢(要検討)
・桜・雪・雨・蛍などの特殊演出(プラグインとしての実装を予定)
・乱数(要検討)
・for、next、break(要検討)
・オブジェクトファイルをダイナミックリンク(要検討)
といった感じです。要検討が多いのは、必要か不要かをまだ見極めきれていないからです。
見ておられる方は、コメント頂ければなと思います。

あと、次回までにはといきませんが
・インタプリタ化
・他言語での利用(Luaあたりを予定)
なども考えております、そこまで終わらせれば一応更新は終わらせるつもりです。

URLリンク(abysslib.hp.infoseek.co.jp)

390:名前は開発中のものです。
09/08/10 18:28:58 FeJ9ZBK3
みてるよー
乙乙

391:167
09/08/13 20:05:11 B8ENj500
現在帰省中故に、EeePCにて作業を行っております。
なのですが……ScriptPlayer2が異様に重い!それに加えて、テクスチャのLockRectが上手くいっていない模様。
DirectX本のサンプルなんかは軽々と動くのに……!

392:167
09/08/13 21:47:47 B8ENj500
(大分時間が経ちましたが続きです)
で、ログ出力などして調べたところ……
DX9AのCreateDeviceにて、
・MaxPrimitiveCount<0xFFFF
・MaxVertexIndex<0xFFFF
・VertexShaderVersion<D3DVS_VERSION(1, 1)
・PixelShaderVersion<D3DVS_VERSION(1, 1)
上記の条件の何れかが成立した場合に、HALでなくREFを使用するようになっていました。
この条件のMaxVertexIndex<0xFFFFとVertexShaderVersion<D3DVS_VERSION(1, 1)が
EeePCのスペック的に引っかかるらしく、強制的にREFで動作していたようです。
条件分岐のところをコメントアウトしたところ、HALになり軽々と動きました。

作成する際に参考にする書籍を間違ったのかなぁ……?
現在、DX9Aのグラフィック部分を作り直し中です。以上。

393:167
09/08/25 20:18:11 6Vt5f2Of
現在の進捗状況です。

・以前のレスにもありますとおり、DX9Aを改良しScriptPlayer2の挙動を改善しました。
・新たな画面効果を追加しました(flash3:フラッシュを波関数を用いて実装)
・新たな画面更新を追加しました(移動補間:更新前の位置から更新後の位置に移動)
・制限時間付き選択肢を実装しました(制限時間は指定可、タイマ画像を表示可)

上記の実装を終えております、他につきましてはまだ検討中の段階です。

394:167
09/10/25 11:40:25 2PK1myMg
随分とお久しぶりです、スランプ気味であまり手をつけておりませんでした(´Д`)

現在、新たな命令の実装を終了したところです。これからテスト&デバッグに入る感じで。
新バージョンのお披露目は、11月中には行えればなと思います。

395:名前は開発中のものです。
09/10/25 15:25:05 ZTRZUjq7
いつか使おうと思っているので、ゆっくりでもがんばってください!

396:167
09/10/25 19:20:12 2PK1myMg
命令のテスト&デバッグを完了、とりあえずは問題なさそうです。
実装したのは、
・乱数
・ループ(for、next、break相当)
・動的ロード(loadobject、gotod、gosubd)
以上のような感じです。
あとは、サンプルを用意してサイトも修正して……もう少しばかりかかりそうですね(;´Д`)

>>395
ありがとうございます、更新遅めですが生温かく見守ってくださいw

397:167
09/10/31 23:00:24 07dz5Ldf
全作業を終えましたので、新バージョンをアップロードしました!

・BasicCommandsをVer1.090からVer1.100にアップグレードしました!
・他にはScriptPlayer2を低スペックPC対応に修正しました!

BasicCommandsの変更点を述べていきますと、
・実行時エラーチェックの不具合を修正
・乱数生成命令の追加(rand)
・繰り返し制御構造命令の追加(beginloop、endloop、break)
・オブジェクトファイルのダイナミックリンク命令の追加(loadobject、gotod、gosubd)
・時間制限付き選択肢命令の追加(selectl)
・selectl実行中に表示される画像の設定/消去命令の追加(selectlclearimage、selectlimage0、selectlimage1、selectlimage2、selectlimage3)の追加

上記のような感じです。

次回以降の更新予定は
・Vista対応(これは次回のアップグレードまでにを予定)
・桜・雪・雨・蛍などの特殊演出(プラグインとしての実装を予定)
・インタプリタ化
・他言語での利用(Luaあたりを予定)
上記のような感じです、大分終わりが見えてきました。

398:名前は開発中のものです。
09/11/01 03:35:14 kOZZ4gjq
>・桜・雪・雨・蛍などの特殊演出(プラグインとしての実装を予定)
組み込み用だからパーティクルエンジン持っててくれれば自分で実装しちゃう気がしないでもない。

399:167
09/11/01 22:04:09 fO+ZFCbG
書き忘れてましたが、
・ScriptPlayerをVS2005以降でコンパイルできるよう修正(これはyaneSDKを弄くる必要があるので難しいかも)
・ジャンル複合サンプルの作成(ADV+RPGやADV+SLG、ADV+STGなど)
上記の内容も近いうちにお見せできたらいいなと考えております。

>>398
ええ、恐らくは可能かと。
あくまでもそのサンプルをひとつ作ってみようかなと考えてる感じですね。

400:名前は開発中のものです。
10/01/04 18:35:51 /uva6imH
HSPでノベルゲームを作っている者ですが……
いわゆるファイルを扱う命令の場合(WIN API関数も含む)、
ハードディスクに実際に存在するファイル名を引数に指定する必要があります。

こういった命令郡をメモリーにロードしたファイルデータで扱う
汎用的な方法ってありませんか?

複数ファイルをパッキングし、そこから欲しいデータの収得まではできたのですが
外部ファイルを引数に取る命令郡の場合、取り出したデータをファイルに書き出してやらないと
目的の動作を達成できません。
そして、そういった方法は、ちょと強引すぎるように感じています。

もとからデータのポインタを引数に取る命令ならよいのですが、
外部ファイルを引数に取る命令郡の場合では、どうしていいかわかりません。

なにかよい方法があればご教授願います。

401:名前は開発中のものです。
10/01/04 18:37:03 /uva6imH
HSPでノベルゲームを作っている者ですが……
いわゆるファイルを扱う命令の場合(WIN API関数も含む)、
ハードディスクに実際に存在するファイル名を引数に指定する必要があります。

こういった命令郡をメモリーにロードしたファイルデータで扱う
汎用的な方法ってありませんか?

複数ファイルをパッキングし、そこから欲しいデータの収得まではできたのですが
外部ファイルを引数に取る命令郡の場合、取り出したデータをファイルに書き出してやらないと
目的の動作を達成できません。
そして、そういった方法は、ちょと強引すぎるように感じています。

もとからデータのポインタを引数に取る命令ならよいのですが、
外部ファイルを引数に取る命令郡の場合では、どうしていいかわかりません。

なにかよい方法があればご教授願います。

402:名前は開発中のものです。
10/01/04 18:38:38 /uva6imH
すみません。
2重に書き込みしてしまいました。

403:名前は開発中のものです。
10/01/04 19:45:23 roT+JtL8
何が聞きたいのか全然分からないぞ。
ファイル名を引数にとるAPIを、ファイル名を引数にしないで利用したいと
言っているように見えるわけだが…

ファイル名を引数にとるAPIの動作を、ファイルポインタで実現する方法が
知りたいのかな? もしそうなら、具体的に何をするAPIなのかを列挙しないと
個々のAPIでそれぞれ違うんじゃないの?

404:401
10/01/04 22:20:10 /uva6imH
>>ファイル名を引数にとるAPIを、ファイル名を引数にしないで利用したいと

意味としてはそのようなものです。
ですが、関数の仕様を考えれば
BMP表示API関数 LoadBitmap()はファイル名を引数にしないと使えないことはわかります。
BMPの表示なら SetDIBitsToDevice() で問題は解決できますが

いわゆる音楽再生系のAPI関数は音楽データのポインタを受ける関数が少ないように思います。
MCI系は全滅に近いような気がします。

素材ファイル郡をひとつにパッキングして、
適時そこからデータを取り出して使う方式をとった場合、
使えなくなる関数があまりに多かったもので、どうしたものかと困っている所です。

結局なにがしたいのかを例で示すと―
 ①ビットマップのデータはメモリーにロードされている。
 ②しかし、ハードディスクにファイルは存在していない。
 ③でも LoadBitmap() 関数を使いたい。(第二引数はLPCTSTR lpBitmapName)

上記のように
 ファイル名を引数にとるAPIを、ファイルが存在していないのに使いたい(データはある)。

というわがままな願いです。

パッキングをあきらめることも、解決策のひとつであると わかってはいるのですが……。

405:名前は開発中のものです。
10/01/05 09:09:56 hjLxpc/P
>>404
LoadBitmapってことは、HBITMAPが欲しいのかな?
それなら、CreateDIBSectionあたりをつかって、DIBを作って得られたメモリに対して、
自分でアーカイブ内の画像を展開するコードを書けばそれで終了。
libpngでもlibjpegでも好きに使え。

406:404
10/01/05 14:32:32 2qPkcFNe
説明がわかりづらくてすみません。

自分としては、hoge( LPCTSTR lpFileName ); のような関数郡、

LoadBitmap( LPCTSTR lpBitmapName )
mciSendString( LPCTSTR lpFileName )
自作関数( LPCTSTR lpFileName )
他人製作のライブラリ関数( LPCTSTR lpFileName )

このような関数郡をファイルをひとまとめにしたパックファイルしかない状況で
使用する一般的な方法があるなら知りたいです。

ただ……
市販のゲームでもoggファイルだけは**.oggのままリリースされているのを
見かけるあたり―一般的な方法は無いのかもしれませんが……。

407:名前は開発中のものです。
10/01/05 20:02:16 ancjkQSv
無理にHSPを使うのをやめるのが一番簡単だと思うよ
かえって足枷になってる感じを受ける

408:404
10/01/06 02:06:21 9wpjbsCw
C言語もできることはできるのですが、力不足のため
WINDOWSの低レベルな部分には手が出ません。
なので、自分の場合、難しいことはHSPにまかせてしまう
そんな低レベルな素人プログラマーです。

とりあえず、吉理吉理の場合 XP3 というパックファイルに
画像から音楽ファイルまでひとつにまとめて
自在に取り出して使っているので
吉理吉理のソースファイルからヒントを見つけてみようと思います。

素人の無茶な質問のご相手ありがとうございました。

409:167
10/02/08 00:55:31 JYU5rbtP
お久しぶりです、仕事がデスマでなかなか作業に着手できておりません(´Д`)
ですがぼちぼちと進めております、とりあえずは忘備録的に。

・動作確認
 Windows7での動作確認を行いました。特に問題はないようです(精査したわけではありませんが……)
 ただしDirectX9をエンジンにした方のみです、yaneSDKをエンジンにした方につきましては下記を参照で。

・yaneSDKの問題
 どうやらyaneSDKをエンジンにするとWindowsVistaならびに7で不具合が起こるようです。
 具体的には、画面に何も表示されません。解決方法としては、「ScriptPlayer.exeのプロパティ」→
 「互換性」→「デスクトップ コンポジションを無効にする」をチェックで画面が正しく表示されるようになります。
 この問題を修正しようにも、何処から手をつけていいものやら……古いDirectXを使っている時点でかなり難しい
 気がします。DwmEnableComposition APIを使用しても上手くいかないので……。

次回更新予定は、
・桜・雪・雨・蛍などの特殊演出(プラグインとしての実装を予定)
上記のものです、それに付随してAbyssLibの実装自由度を高めます。
具体的には、AbyssLib内のswitch文のほとんどをプラグイン対応に改めます。
これにて、ほぼ全ての要素を外部から操作可能になる筈です(具体的に言いますと、
外部から操作不可能なパラメータはテキストカーソルの種類とシーンの種類のみとなります)

あとは次々回にLua対応物やインタプリタを用意して、その後は
様々なサンプルを用意していく予定です。次々回以降のアップグレードは、
今のところ内容が思いつかないので予定がありません。バグ修正ぐらいになる……筈です。

以上、とりあえずは顔出しついでにで(´Д`)

410:167
10/04/19 20:26:26 rE22Ttc/
お久しぶりです、いまだにデスマです(;´Д`)
とりあえず、現状をば。

・特殊演出(降雪)がほぼ完成
 近いうちにそれだけをまとめてアップロードしようと考えております。
 また、特殊演出の基盤が完成したので他(雨・桜・蛍)にも順次着手予定です。
 次回アップデートは、GW終わりあたりを目処にして現在頑張っております。

411:167
10/07/18 12:26:06 4gCLox02
お久しぶりです(´Д`)
デスマは抜け出しましたが、今度は同人ゲーム制作の請け負いで忙しくなっており……(;´Д`)
とりあえず、現状をば。
1.SVNを導入しました
2.Windows7環境を導入しました
    いや、まあ私事ですが(;´Д`)
3.降雪エフェクトが完成しました
    残る予定は、降雪(パラメータセット)、雨(パラメータセット含む)、蛍(パラメータセットry)、桜(パry)です。
    雨ならびに蛍はアルゴリズム選定済みで、桜は考慮中です。
4.VC2003を開発セットから外しました
    理由がいくつかありまして、
    ・開発機が7になった(Vistaならびに7とVC2003は相性が悪い、検索・置換機能がまともに使えないとか色々と)
    ・VC2003で開発を続けるメリットの消失
        (つい先日知ったのですが、VC2005以降はExpressEditionでもコンパイラの最適化が行なわれているようです。
            (グッジョブマイクロソフト、これで2003ProfessionalEditionから離れられます!
                (まあ、慣れていたので若干の惜しさを感じますが)
            )
        )
5.バグの修正(シーン遷移時に不要な描画が行われていた)
6.以下の要素がプラグインで拡張可能になるよう変更
    ・描画タスク追加関数
・描画タスク描画関数(転送方法の種類別)
・描画タスク描画関数(描画タスクの種類別)
7.6に伴いDrawTask構造体を拡張(nArg, strArgメンバを追加)
8.テキストウインドウの強制表示が可能になるよう変更
9.現在の音量がデフォルト音量に準拠しているかをチェックするメソッドを追加
10.9に伴い音量の有効範囲を-10000~0から0~10000に変更
11.SEおよび音声の再生メソッドを多重再生可能に変更

412:167
10/07/18 12:30:05 4gCLox02
12.スクリプトの拡張
    fadein、fadeout命令の拡張
        色んなことができるように。fadeinu、fadeoutuの存在理由がなくなりましたが、互換性維持のためそのままにしておく予定です。
        また、パラメータ数が増えましたが互換性維持のためシュガーシンタックスとしてデフォルト引数を持たせておきます。
    forcetextwindow命令の追加
        8に伴いテキストウインドウの強制表示を行える命令を新たに追加しました。
13.音量設定を減衰率を考慮したものに変更
    以前は7000でほとんど聞こえなくなっていたものが、0で聞こえなくなるようになりました。


413:167
10/07/18 12:34:12 4gCLox02
今まで、そしてこれから

現状は上に挙げました通りで、今のところゲーム制作の方で手一杯な状況です(;´Д`)

とりあえずは、これからについて記していきます。

・現在制作中のゲームをフィードバックしていきます
    それによりより現実に即したスクリプト作成を心がけます。
    テキストウインドウ強制表示は、フィードバックから生まれました。

・なるべく早めに特殊エフェクトの完成を目指します
    アルゴリズムの見立てが終わっている雨ならびに蛍の実装を早めに行います。
    今は忙しいですが、まあ隙を見つけて少しずつ進められればと……。

・マイルストーンをいい加減立てます
    このままずるずるいくと、ゲーム制作後に手がけることになりそうなので……。
    とりあえず、お盆前後には形はどうあれ上げるようにします。

以上です、見ている方がおられるかは分かりませんが(;´Д`)

414:名前は開発中のものです。
10/07/18 14:45:22 ay0n2T2r
64bit対応は?

415:167
10/07/18 19:17:59 4gCLox02
>414
ご質問ありがとうございます。
64bit対応は現在のところ考えておりません。

理由としましては、単純に開発環境を有しておらず動作テストを行うことができないからです。

64bit対応プログラミングにおきまして注意すべきところは、以下のようになります。
①int型やlong型が32bitから64bitに拡張される(場合がある)
②ポインタが64bitに拡張される(場合がある)
③0xFFFFFFFFが[-1]にならない
④アライメントが4バイトから8バイトに拡張される
⑤Win32APIなどの関数の一部で32bit対応のものと64bit対応のものを変更する
⑥アセンブラのレジスタ、命令を書き換える
①~④に影響するようなコードの書き方はしておりませんが、
⑤⑥については未知数です。ですので、64bit環境での動作は保障できません。

ただ、いずれは64bit環境が潮流になるような気はしますので対応させてはいきたいところではあります(´Д`)

416:167
10/08/29 17:59:39 zUSxxtwK
現状報告です。
……お盆前後を過ぎても上げられておりません(;´Д`)

理由としましてはフレームワークの再構築を行っているのですが、
そちらでバグが多発して修正に手間取っているからです。

とりあえず今のところ、セーブ/ロード周りをクラス化しました。
これにより、派生クラスさえ作ればパックファイルからでも何からでも
ファイルの読み込み・書き込みが行えるようになります。

とりあえず現在の作業が終わって、今まで作成したサンプルの動作テストが完了して
からアップロードしようと考えております。現在、ゲーム制作も請け負っているため
結構時間がかかりそうです。早くても九月下旬ぐらいでしょうか……が、がんばります(;´Д`)

417:名前は開発中のものです。
10/08/29 19:42:19 o9gXKL0X
はい先生!

>派生クラスさえ作ればパックファイルからでも何からでもファイルの読み込み・書き込みが行えるようになります。

こういうのは委譲の方がいいと思います。

418:167
10/08/29 20:23:33 zUSxxtwK
>417
レスをありがとうございます(´Д`)

>はい先生!
>
>>派生クラスさえ作ればパックファイルからでも何からでもファイルの読み込み・書き込みが行えるようになります。
>
>こういうのは委譲の方がいいと思います。

委譲……ですか?
今現在の実装は、このような感じです。

//クラスA(セーブ/ロードを行うクラス)
class A{
void Save(IIOStream* stream){
Stream->Save(Param1);
Stream->Save(Param2);
}
void Load(IDataReader*
Stream->Load(&Param1);
Stream->Load(&Param2);
}
};

//セーブ/ロードクラス
class IIOStream{

419:167
10/08/29 20:25:05 zUSxxtwK
……途中で切れてしまいました(;´Д`)

//セーブ/ロードクラス
class IIOStream{
public:
~IIOStream(){}
};

class IOStream1 : public IIOStream{
void Save(param p){
fwrite(p);
}
void Load(param* p){
};

420:167
10/08/29 20:30:25 zUSxxtwK
……プログラマの性で、ついつい「Tab→Enter」を使用でこの様です(;´Д`)

void Load(param* p){
fread(p);
}

大体こんな感じで、データ入出力は個々のクラスにパラメータとして渡す形になってます。
確か、機能を別クラスとして作成して処理を委ねるのが委譲でしたっけ?

あ、レスの書き方が悪くて分かりにくいかもしれませんが
「派生クラス」は「データ入出力クラスの派生クラス」のことです。
こんな感じでいいのでしょうか、何かアドバイスありましたらお願いします(´Д`)


421:417
10/08/30 07:31:51 pptN1p2m
>>418
ふむ、そういう実装でしたか。少し想像と違いました。そういう時はBuilderパターンの変化球ですかね。

>機能を別クラスとして作成して処理を委ねるのが委譲
委譲についてはこの通りです。
別クラスにするのでHogeHogeする側がHogeHogeされる側について詳細を知る必要がなくなり、
かつ、継承と委譲は相互に置き換え可能です。
んでBuilderパターンですが組み立てる側と組み立てる流れを管理する側に分けて最終的に"製品"をreturnします。

Builder
getInstance(discriminator):Builder
buildPart1()
...
buildPartN()
...
getProduct():Product

Director
build(builder:Builder):Product

これがBuilderパターンの基本です。
Builder.getInstance(discriminator)はpublic staticなファクトリメソッドです。
これで取得したインスタンスをDirector.build(builder:Builder)にわたしDirectorは結果であるProductを返します。
DirectorはbuildメソッドでBuilderの各メソッドを適切に呼び出します。
それらメソッドのアクセスはBuilder(又はそのサブクラス)とDirectorのみにします。

422:417
10/08/30 07:58:28 pptN1p2m
さらに、Builderは機能ごとに継承するか委譲するかを考えます。
委譲する場合は以下になります。

Builder
getInstance(discriminator):Builder
buildPart1()
...
buildPartN()
...
setProvider(p:BuildProvider)
getProvider():BuildProvider
getProduct():Product

BuildProvider

buildPart1()
...
buildPartN()
...
getProduct():Product

Builderの実装はプロバイダに投げ、getInstance(discriminator)で適切にプロバイダを設定します。
ここから先、今回の件に特殊化した内容で書きます。

423:417
10/08/30 08:00:09 pptN1p2m
BuilderをProcessorとしましょう。
データの読み書きのために入出力とデータをカプセル化したクラスが必要です。

Stream

InputStream->Stream
read(date:Date)

OutputStream->Stream
write(date:Date)

Date

Processor
getInstance(discriminator):Processor
processPart1()
...
processPartN()
...
//以下必要に応じて
getDate():Date
setDate(d:Date)
setStream(s:Stream)
getStream():Stream

Dateはセーブ・ロードを行う実データです。Streamと一緒にProcessorに渡して読み書きします。
これら一連の処理をDirectorに管理させます。
こんなかんじです。Javaだとシリアライザが組み込まれてるのでそれが使えるんですがね。

424:167
10/09/08 00:05:32 F8SH4g+3
●購入記念に、当スレの過去ログを1から追ってみたりしてます。
私が参加したのは前スレからなんですなぁ、そもそも「私」じゃなくて「漏れ」でしたしw
当然というか何と言うか、前スレから参加したので1スレも2スレも見ておらずADVRUNの人がいるとかびっくりですよ。

……閑話休題、現在の進捗状況です。
別のこと(同人ゲームの制作請け負い)を優先に行っており
進捗はあまり捗っておりませんが、一応自分で立てたマイルストーンは達成しました。
ですので、バイナリ・マニュアル・Webサイトの更新を実施後アップロードする予定です。


425:167
10/09/08 00:06:14 F8SH4g+3
で、今後行う予定のこと一覧↓
・特殊演出
 雪は完成済み、あとは雨・桜・蛍を予定。
 あくまでも特殊演出の「サンプル」のつもりで作成予定。こんな演出も組み込めるよ的な感じですね。
・インタプリタ化
 リアルタイムでコンパイルかけてメモリに展開→実行でいいのでしょうか?
 製品にはコンパイル済みのシナリオファイルを添付するものと考えてますので、
 速度面であまり早くなくてもいいのではないかなと考えております。
・他言語での利用
 Luaあたりでスクリプトファイルを書いて、
 それを読んでノベルエンジンを動かせたらなと考えております。
 形式としましては、AbyssLibに追加ではなく外部拡張ライブラリを考えております。
・ジャンル複合サンプルの作成
 ADV+RPGやADV+SLG、ADV+STGなど。
 元々、当システムのメリットは組み込み用途なので……。
・アウトラインプロセッサ、IDE(統合開発環境)の作成
 この辺もまあ作れたらなと、生産性向上に。
 作成時にはC#を勉強しつつさくさくっと作る予定。
 プレイヤーに.NET FrameWork導入強要は厳しいですが、開発者相手なら別にいいですよね?w
・環境依存性を徐々に改善していく
 WindowsAPIを全て関数化して一箇所に集めて置換を容易にする、Unicode対応にするなど。
・ソースコードのリファクタリング
 今回一度行いましたが、次回はdoxygen対応に行いたいです。
 SVNは導入してみましたが、doxygenも導入すると便利そうです。マニュアル書くのはもう嫌ですw
・マクロの用意
 Cの「#define」のようなテキスト置換的マクロを用意する予定。
 あれば色んな命令のエイリアスが作成できるので、多少は入力が楽になる……筈。
・マルチウインドウ
 最近のノベルゲームでは稀によく見ますので。

426:167
10/09/08 00:07:03 F8SH4g+3
とりあえず行う予定のない一覧(過去ログ見つつ)↓
・動画再生
 組み込み用途なので、ゲーム開始時のOP動画ならプログラマさんが再生すればいいかなと。
 ただ、最近のノベルゲームでは合間に動画再生を挟むこともあるので作るかもしれません。基本優先度は最下位ですが。
・低スペックマシン・過去OSの対応
 もうXP以降のOS対応でいいんじゃないでしょうか(一応WindowsAPIの縛りはマクロで入れてますが)
 インターフェースクラスライブラリということで高級アルゴリズム(過去ログ表示)などしかないライブラリですので、
 低スペックマシン対応は個々のプログラマさん(またはフレームワーク)による対応になります。ですので、しないというよりはできません。

大体このような感じですね、何か希望する機能がありましたらレスいただけましたらと(´Д`)

427:167
10/09/08 00:22:57 F8SH4g+3
その他、URLリンク(www5.big.or.jp)を見て思いついたこと。
・セーブ/ロードでコメント入力を可能にする
・セーブ/ロード命令
・シーンライブラリの提供
 現在のAbyssLibの初期シーンは我ながらしょぼいです。
 なので、いくつかのシーンを収めた外部拡張ライブラリをいずれは作る予定です。

とりあえず、今回のカキコはこんなところで(´Д`)


428:167
10/09/08 00:23:39 F8SH4g+3
そして書き忘れてました、417さん丁寧な説明ありがとうです!参考にします!

429:167
10/09/12 09:53:05 MVUJyKep
現在までのスレを読了、気付けば開発開始から6年ほど経っているのですなぁ(´Д`)
6年も続けてこれたと言うべきか、6年経ってもこの様と言うべきか……(多分後者)
長老って名乗っていいかもしれませんなぁw

まあそんなどうでもいいことはさておいて。
大体のテストは完了し、あとはウェブページやHTMLヘルプを更新すれば
アップロード可能になります。たいした更新ではありませんが、今月末にはまあ上げられるかなと(。。

430:167
10/09/13 01:06:06 e+66nL0f
今月末と言いつつも、何とか今日中に上げられました!……ってもう月曜日やん('A`)
ともあれ、一応一区切りつきました!とりあえず、しばらくは同人ゲーム制作の方に戻ります。
締め切りがっ……!

431:167
10/09/13 06:05:28 e+66nL0f
っと、アドレスを張っておきますね。
URLリンク(abysslib.hp.infoseek.co.jp)

432:167
11/01/05 00:25:46 x17xsyhy
お久しぶりです、すっかり過疎ってますなぁ(´Д`)
同人ゲーム制作の請負が一段落したので、色々と得られたものを元にアップグレードしていこうと思います。
今年度末までには一度上げられたらなぁと……ただ、本業がデスマーチなんですよね。困ったものです(´Д`)

433:名前は開発中のものです。
11/03/23 22:23:59.42 6ssi6soF
>> インフォシークからのお知らせ
>> 「iswebライト」は2010年10月31日をもってサービス提供を終了いたしました。
>> 長年ご愛顧いただきありがとうございました。

いやんばかん



434:名前は開発中のものです。
11/03/24 07:57:32.66 1s3ZKAzd
>>433
うおおっ、そうでしたっ!
ページは移転済みなのに、ここに載せ忘れており……。
近日中にURLを載せますのでっ!

435:167
11/03/24 07:59:04.63 1s3ZKAzd
名前を入れ忘れてますが、167ですか

436:167
11/03/28 22:20:53.14 xCKPkIC5
URLリンク(abysslib.sakuraweb.com)
移転後のページはこちらです。
現在の作業状況は……何もかも未着手な状態です、色々と忙しいので(;´Д`)

何か希望などありましたら伺えれば考慮いたしますよー。

437:名前は開発中のものです。
11/03/29 20:22:40.80 4kqLIzs4
yy

438:167
11/06/13 20:37:33.13 HXWa/DbF
お久しぶりです、すっかり過疎ってますなぁ(´Д`)
(同じ台詞を半年前に、というか6レス前でしてますな)

とりあえず現状をば。
ようやく、AbyssLibのDoxygen対応作業が完了しました。
現在、変更点の再確認やサンプルなどの動作確認を行ってるところです。
サイトも全面改装して、色々とより分かりやすい内容でお送りしていきたいと考えております。
とりあえず、(できたら)今週末には最新バージョンをお見せできるかなと。

439:名前は開発中のものです。
11/06/18 07:49:01.56 tjfUjNu2
のぞいてはいるよ。
サイト改装するのなら、AbyssLib採用の作品を載せて欲しいかも。
見てみたい。

440:名前は開発中のものです。
11/06/18 15:53:47.63 +AhyU/E4
俺も定期的にのぞいてる。
残念ながらゲーム作成の予定はないが、167の人柄は好きだ。
頑張ってください。

441:167
11/06/18 23:58:13.93 vd4FH/ii
お久しぶりです……と言うほどは、まだ経っていませんよね?(´Д`)
アップデートファイルのうpとサイトの改装が終わりましたので、ご報告をと。

URLリンク(abysslib.sakuraweb.com)
【アップデート内容】
・AbyssLib
 NovelPlayer::Resume呼び出し時にテキスト・発言者がクリアされるように変更
  実際にゲームに組み込んでみてのフィードバックです。
  suspendでノベルパート終了→ゲームパート→NovelPlayer::Resumeでノベルパート再開といった流れで、
  上記の変更を行っていない以前のAbyssLibだとsuspend実行時に表示されてたテキスト・発言者名が一瞬見えます。
  格好悪いので変更しましたw
 ソースコードをDoxygenに対応
  ゲームプレイヤーにメリットは全くありませんが、私ならびにAbyssLib利用者にはメリットがいくらかあるかなと。
  私は今後バージョンアップ毎にリファレンスを書き直す必要がなくなりますし、AbyssLib利用者は固定フォーマットのリファレンスを読めます。
 ソースコード上でもコンパイラ対応をVC2005以降に変更
  以前にVC2003を切り捨てましたが、ソースコード上でも切り捨てました。
  いや、まあ一部ソースをコメントアウトすれば普通にVC2003でも使えるかとは思いますが。
・BasicCommands
 駄目文字による不具合を修正
  実際にゲームに組み込んでみてのフィードバックです。
  駄目文字で文字列置換が変になる現象が発生しましたので修正を行いました。
 タグ命令実行時にガードタイムが無視される不具合を修正
 effect命令実行中にスキップが行われるとテキストウインドウが正しく表示されない不具合を修正
・ScriptCompiler
 駄目文字による不具合を修正
・ScriptPlayer2
 ユーザー入力用デバイスでマウスカーソル・マウスホイールの入力のキャプチャを行っていなかった問題を修正
 Altキー押下時にゲームが一時停止してしまう問題を修正
・その他
 公開サイトを改装
  チュートリアルをより分かりやすく、リファレンスをDoxygenドキュメントに、FAQを追加
  特にプログラマ向けリファレンスで抽象クラスの実装例を掲載したのとFAQの追加は大きいかなと。

442:167
11/06/19 00:07:07.35 SvacW21g
とりあえず、今後の予定をメモを元にざっと書き出してみます。

優先度:高
・アニメーションタグ
・描画タスクリストのクリア
・セーブ/ロードを行う命令を追加
・特殊エフェクト(雪・雨・桜・蛍)
・グローバルデータ、環境設定、既読履歴の一本化
・fadein、fadeout、fadeinu、fadeoutuの統廃合
・flash、quakex、quakey、quakey、quakexy命令の統廃合
優先度:中
・進化した既読履歴
・マルチウインドウの導入
・フルパスチェッカーを追加
・マクロ命令(#defineライク)
・セーブ/ロードのコメント対応
・オートセーブ/クイックセーブ
優先度:低
・インタプリタ化
・動的解析・実行
・ジャンル複合サンプル
・特殊命令(動画再生など)
・Luaでの利用(外部拡張ライブラリ)
・アウトラインプロセッサ、IDEの作成
・環境依存性を徐々に改善(OS、文字コード)
・シーンライブラリの提供(外部拡張ライブラリ)
・テキスト命令の拡張(インタプリタに変更することで動的な命令実行を可能にする)

今現に進んでいるのは特殊エフェクトですので、まずはそれを最優先で進められればと。
まあ、同人ゲームの制作請け負いやその他(仕事や勉強や趣味)でてんやわんやではありますが……。

443:167
11/06/19 00:11:22.88 SvacW21g
>>439-440
おお、こんな構ってちゃんな独り言に反応ありがとうございます(´Д`)

>>439
AbyssLib採用の作品は、「日常の終わり方」です。
ただ、上記作品はあくまで「ADVサンプル」なので他ジャンルとの複合も作りたいところではあります。
簡単なRPGチックなものならすぐに作れそうですが、そんなんでいいのでしょうか?(マップ歩いて話しかけたら、ADVパートに以降みたいな)

>>440
ありがとうございます、かなり猫を被ってますのでお恥ずかしいかぎりです(´Д`)

444:167
11/08/13 20:25:44.77 Jx+QSm0S
お久しぶりです、とりあえず現状をば。

……あまり進んでおりません、原因は転勤と夏バテです(;´Д`)
とりあえず、現在行いました改修内容は以下になります。
・画像の回転・拡縮に対応しました
今までは元々がyaneSDK対応ライブラリだったこともあり回転・拡縮はサポートしておりませんでした。
今回、サポートするように変更を加えました(といっても実装はなく、あくまでインターフェース面のサポートですが)
これで、新規にエフェクトなどを追加する際には色々とやり易くなるかなと考えております。
かけている時間に比するとあまり進んでおりませんが、まあぼちぼちと今後も次期バージョンに向け作業を進めていきます。

445:名前は開発中のものです。
11/09/08 16:55:47.99 Rn99QBFa
ノベルデータのXMLで標準タグみたいなものってあるんでしょうか?



446:167
11/09/19 13:36:03.75 B1spqzys
お久しぶりです、現状冬コミ準備で忙しく進んでおりません(;´Д`)

>>445
ノベルデータのXMLと仰られますと?
そもそも標準規格のようなものを聞いたことがないのですが……。

447:167
11/11/06 21:13:59.47 BAbg9SN1
お久しぶりです、現状久々に開発を再開しております(´Д`)
現在、命令の統廃合と特殊演出の開発を進めております。

雪エフェクトが概ね完成となり、あとは命令体系を構築するのみです。
他公開予定エフェクト(雨・桜・蛍)も雪エフェクトのアルゴリズムの流用でいけそうです。
(蛍エフェクトだけは若干難しいかもしれませんが)

何にせよ、次期バージョンは年内か年度内にはお見せできるかなと思われます。
とりあえず、今はまあそんな感じです。


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