改訂、作業履歴

改訂、追加箇所は赤字で記述。

2009/07/31
・動画再生機能実装。
・エフェクトアニメーション実装。
実装エフェクト:
フェード
ワイプ
フラッシュ
シェイク
グレースケール
セピア調
反転
ぼかし
シャープ
モザイク
エフェクトを作りだすと限がないのでこの辺りで一旦終了させ
未作成機能を優先で作っていきます。

2009/07/23
・環境設定実装。
・既読スキップ実装。
・オート送り実装。
・バックログ実装。

2009/07/15
・DirectX AudioでOGGサウンドプレイヤーを実装しました。
情報が少なく制作に苦戦してましたがとりあえず実装。仕様は以下の通り。
サンプリングレート…OGGファイルより取得し設定。
ビットレート…16ビットで固定とする。
チャンネル数…OGGファイルより取得し設定。
(2チャンネル(ステレオ)再生も可能ですがメモリ使用量も2倍になるのでお勧めはしません)
再生ヘッドより約1秒分?のデータを先読みしデコードしながら再生しています。
大きなファイルでも少ないメモリで再生し続けられます。たぶん。
・Excalで簡単なスクリプト?実装。
・変数テーブル実装。
・セーブ、ロード実装。

2009/07/03
・2D描画方法を見直し変更しました。
DirectXの2D描画はDirectX8のバージョンで3D描画と統合され消滅しました。
最新のDirectX9でも、3DのSprite機能を使えば2D描画も出来るのですが、
低速でスペックの低いマシンでは快適に動作しそうにありません。
3D描画は切り捨ててDirectX7での開発に切り替えました。
この変更に伴い、取り扱う画像形式をBMP(24bitカラー)のみに変更します。
黒(RGB=0)は透過色とし透過します。
半透明透過にはBMP(8bitクレースケール)を使いマスク処理を行います。

2009/06/?? 初版


1.ゲームシステムの画面例、特徴

※図1-AVG画面例

自分のスキルアップと、今後のゲーム開発に役立てるため
ノベルゲーム、AVGを効率よく簡単に作ることを目的にツール開発を開始しました。
特徴といたしまして
・DirectXベースで高速な動作が可能です。
・ゲームの流れ(スクリプト)をエクセルシートに記述することでシナリオの再生を制御。見やすく簡単に!
・自力開発のため、機能拡張がどんどんできます。
AVG以外のゲーム開発にも流用できる。
スクリプトの記述も、今後GUI環境でフローチャートを記述したらゲームが作れる所まで拡張していく予定。


2.開発環境

言語:C/C++
ソフト:Visual C++ 2005 + DirectX 9
Excel 2007 + VBA


3.シナリオ、アニメーションの制御方法について

シナリオ、アニメーションの制御をエクセルシートに記述する予定です。
詳細な仕様にいつては検討中です。

※図3−1-シナリオ記述例

項目説明
A.ラベル行に名前を付けます
B.制御分岐する場合などにここに制御文を記述。
※表3−2参照
C.条件制御の条件を記述。
D.パラメータ1条件で記載した項目に対するパラメータ
E.パラメータ2条件で記載した項目に対するパラメータ
F.変数管理変更する変数(フラグ)を記述
G.人物 人物を記述
H.表示メッセージ 表示メッセージ
I.背景画像 背景画像ファイル名
G.背景マスク 背景画像マスク
K.背景画像2 背景画像の合成用
L.背景マスク2 背景画像2マスク
M.キャラ1 キャラ1に設定する画像ファイル名
N.マスク1 キャラ1のマスクに設定する画像ファイル名
O.キャラ2 キャラ2に設定する画像ファイル名
P.マスク2 キャラ2のマスクに設定する画像ファイル名
Q.キャラ3 キャラ3に設定する画像ファイル名
R.マスク3 キャラ3のマスクに設定する画像ファイル名
S.キャラ4 キャラ4に設定する画像ファイル名
T.マスク4 キャラ4のマスクに設定する画像ファイル名
U.キャラ5 キャラ5に設定する画像ファイル名
V.マスク5 キャラ5のマスクに設定する画像ファイル名
W.効果音 再生する効果音ファイル名
X.音声 再生する音声ファイル名
Y.BGM 再生するBGMファイル名
Z.開始時アニメーション行の開始時行うアニメーション。アニメーションシートに記述したもの
AA.終了時アニメーション行の終了時行うアニメーション。アニメーションシートに記述したもの
※表3−1-シナリオシート

シナリオシートの「B.制御」に記述するコマンド一覧

項目制御条件パラメータ1パラメータ2
If文
条件が真の場合に指定のシート行へジャンプする
If条件式条件が真の場合にジャンプするシート名(省略は現在のシート)条件が真の場合にジャンプするシートのラベル名(省略は最初から)IF flag==1 シナリオ1.csv ラベル1
意味)変数flagが1の場合ファイル「シナリオ1.csv」のラベル「 ラベル1」から再生しなさい。
Select文
選択ボタンを表示させ、ボタンが押されたらシート行へジャンプする
Selectなしジャンプするシート名(省略は現在のシート)ジャンプするシートのラベル名(省略は最初から)Select シナリオ2.csv
意味)ボタンが押されたらファイル「シナリオ2.csv」の最初から再生しなさい。
Goto Sheet文
指定のシート行へジャンプする
Goto Sheetなしジャンプするシート名(省略は現在のシート)ジャンプするシートのラベル名(省略は最初から)Goto Sheet ラベル5
意味)現在のファイルのラベル「 ラベル5」から再生しなさい。

【関係演算子】

If文での条件、2つの値の大小関係を比較し、真のときにはジャンプを、偽のときには次の行で遷移する

【関係演算子】
演算子意味使用例
>より大きいIf a > b
>=より大きいか、等しい
(以上)
If a >= b
<より小さいIf a < b
<=より小さいか、等しい
(以下)
If a <= b
==等しいIf a == b

【論理演算子】

論理演算子を用いると、複数の条件を組み合せることができます。

【論理演算子】
演算子意味使用例
&&論理積(かつ)If a > 0 && b > 0
||論理和(または)If a > 0 || b > 0

四則演算と代入の演算子

変数定義では、四則演算と代入は中置き演算子を用いて命令します。演算記号は下の表の様になります。

演算子 処理内容

=

左辺の変数に右辺の値を上書きする

+

左辺と右辺の値を加えた値を戻す

-

左辺から右辺の値を引いた値を戻す

*

左辺と右辺の値の積を戻す

/

左辺を右辺で割った商を戻す(整数、あまり切り捨て)

使用例
a=3*2
b=a+(10/2-4)

結果
a=6、b=7になります。

※図3−2-アニメーション記述例

項目説明
A.アニメーション名アニメーション名
B.ターゲット制御のターゲット(キャラ、背景)
C.効果効果(エフェクト)の種類
D.パラメータ1 効果のパラメータ1
E.パラメータ2 効果のパラメータ2
F.時間(ms) アニメーション時間
G.表示(左) 表示する左範囲座標。省略可
H.表示(上) 表示する上範囲座標。省略可
I.R 赤色値 0〜255
J.G 緑色値 0〜255
K.B 青色値 0〜255
L.アルファ アルファ値 0〜255
※表3−3-アニメーションシート

※図3−3-CSVファイル出力画面

エクセルで作成した、シナリオ、アニメーションはCSV形式のファイルで吐き出しゲームで使います。
ファイル保存用マクロはエクセルファイルに実装してあります。
マクロ名:CsvWriteFile
マクロのショートカット:Ctrl+Q

出力範囲:選択中シートか全てのシートをCSVファイルで出力するか選択。
出力先フォルダ:出力先フォルダを記述。c:\\DXGSEXCEL.INIに初期設定値を記述しておく(自分の環境に合わせて変更しておくと便利)
CSVファイル出力:出力を開始する。

※図3−4-変数テーブル記入例

エクセルで作成した変数テーブルもCSV形式のファイルで吐き出しゲームで使います。
ローカル変数はセーブを実行したときにセーブデータに保存され、ロード時に読み込まれます。
グローバル変数は更新されるたびに自動で保存され、常に保持される共通変数です。


4.セーブ、ロードについて


※図4−1-セーブ画面


※図4−2-ロード画面

セーブに保存される項目

画面スクリーンショット
セーブ時刻
タイトルのコメント
ローカル変数
表示中の画像ファイル名と再描画に必要な情報
再生中のシート名と行番号
バックログ情報


5.その他


※図5−1-環境設定画面


※図5−2-バックログ画面


6.取り扱うファイルデータ形式について

取り扱うファイルデータ形式について、開発中は取り扱いやすさを重視しファイル圧縮なしで取扱い、
製品版ではファイルの圧縮を行う予定です。
圧縮形式はLHAやZipと同じハフマン圧縮方法を元にした独自のインデックスを追加した圧縮形式を予定。

項目開発中製品版
シナリオ等のテキストテキスト形式(そのまま使用)ファイル統合&圧縮
画像BMP(24bitカラー)黒(RGB=0)は透過色
半透明透過にはBMP(8bitクレースケール)をアルファとして使用
ファイル統合&圧縮
サウンドOGG
サンプリングレート…ファイルから取得
チャンネル数…ファイルから取得
ビットレート…16ビット
ファイル統合&圧縮
動画ASF、WMV(Windows Media エンコーダでエンコードできます)
ASF、WMV
※OGGは著作権フリーなコンテナフォーマットでサウンドデータの圧縮に適しています。
製品版時に圧縮すると2重圧縮になってしまいますがファイル圧縮効率を考えBGM、音声などはこの形式を使用予定です。


7.最後に

現在、仕様を考えながら手探りで開発を進めています。
今後も、仕様変更、拡張があると思われます。
まだ開発間もないこともあり、機能未実装の部分が多いですが
1、2ヶ月を目途にAVGの基本機能は実装できる予定で進めています。

サンプルプログラムのダウンロード
開発途中のため、開発環境の無いPCでの動作確認を行っておりません。
動かない場合はご連絡をお願いいたします。
お問い合わせ、質問、アドバイス等も受け付けておりますのでよろしくお願いいたします。