▼ノベルゲームツールを作っちゃうぞ!Ver4.0at GAMEDEV
▼ノベルゲームツールを作っちゃうぞ!Ver4.0 - 暇つぶし2ch411: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