戻る
DNMLの作成方法(Rewrite編)

1.超簡単なDNMLを作ってみる

DNMLは、小説をマークアップする言語、というだけあって、基本はテキストファイルです。
なので一切演出なしでいいなら、メモ帳でSSを書いて保存すれば、それでDNML完成です。

(1)メモ帳でSSを書く
────────────────────
瑚太朗「Hello World!」
小鳥「Hello World!」
────────────────────
Rewrite DNMLサンプル

(2)名前を付けて保存
Rewrite DNMLサンプル
拡張子はなんでも構いませんが、『.dnml』にしておくのが通例です。
あとは保存したファイルをDNML(緑)のアイコンにドラッグ&ドロップして起動させれば、SSが表示されます。
Rewrite DNMLサンプル




2.タグを入れてみる

DNMLは、タグというものを入れることで様々な演出を加えることができます。
タグの種類や説明については、DNMLタグ一覧が参考になるかもしれません。

(1)クリック待ちタグ
────────────────────
瑚太朗「Hello World!」<P>
小鳥「Hello World!」<P>
────────────────────

(2)改行タグ
────────────────────
瑚太朗「Hello<NL>World!」<P>
小鳥「Hello<NL>World!」<P>
────────────────────

(3)インデントタグ
改行後のテキストの開始位置を、括弧の右側に揃えるためによく使われるタグです。
(2)の実行結果と見比べると、その効果が理解しやすいと思います。
────────────────────
瑚太朗「<INDENT>Hello<NL>World!」</INDENT><P>
小鳥「<INDENT>Hello<NL>World!」</INDENT><P>
────────────────────

(4)画面サイズ指定タグ
────────────────────
<STAGE WIDTH="1280" HEIGHT="720">
瑚太朗「<INDENT>Hello<NL>World!」</INDENT><P>
小鳥「<INDENT>Hello<NL>World!」</INDENT><P>
────────────────────

(5)テキスト表示範囲指定タグ
────────────────────
<STAGE WIDTH="1280" HEIGHT="720">
<SCREEN TOP="560" LEFT="240" WIDTH="785" HEIGHT="138">
瑚太朗「<INDENT>Hello<NL>World!」</INDENT><P>
小鳥「<INDENT>Hello<NL>World!」</INDENT><P>
────────────────────

(6)文字フォント指定タグ
────────────────────
<STAGE WIDTH="1280" HEIGHT="720">
<SCREEN TOP="560" LEFT="240" WIDTH="785" HEIGHT="138">
<FONT FACE="MS ゴシック" HEIGHT="30" SKIP="42">
瑚太朗「<INDENT>Hello<NL>World!」</INDENT><P>
小鳥「<INDENT>Hello<NL>World!」</INDENT><P>
────────────────────

(7)テンプレートを使う
このように色々なタグを組み合わせて使うことで、原作の雰囲気に近づけていくのですが、自分でそれを設定するのはとても面倒です。
その手間を省くために用意されているのがテンプレートで、以下の2つのインクルードタグを追加するだけで、基本的な部分の設定を全てやってくれます。
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">
瑚太朗「<INDENT>Hello<NL>World!」</INDENT><P>
小鳥「<INDENT>Hello<NL>World!」</INDENT><P>
────────────────────
ちなみに『環境設定.dnml』というのは、読者がパソコンにインストールしているゲームの情報が収められているファイルです。
この1行を入れなくてもDNMLを作ることはできますが、その場合、原作ゲームの画像やBGMを利用することができなくなります。

(8)名前表示部分を原作っぽく
Rewriteの名前表示を普通のタグだけで再現しようとすると、以下のようになります。
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">
<SCREEN TOP="498" LEFT="250" WIDTH="785" HEIGHT="200">
<WAIT TEXT="0">
<FONT HEIGHT="32">
瑚太朗
</FONT>
</WAIT>
<SCREEN TOP="560" LEFT="240" WIDTH="785" HEIGHT="138">
「<INDENT>Hello<NL>World!」</INDENT><P>
<SCREEN TOP="498" LEFT="250" WIDTH="785" HEIGHT="200">
<WAIT TEXT="0">
<FONT HEIGHT="32">
小鳥
</FONT>
</WAIT>
<SCREEN TOP="560" LEFT="240" WIDTH="785" HEIGHT="138">
「<INDENT>Hello<NL>World!」</INDENT><P>
────────────────────
ただし、これだととても面倒くさいので、ここでもインクルードタグを使います。
(最初のうちは『インクルードタグは面倒くさいものを代わりにやってくれるタグ』と憶えておけばOKみたいです)
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
────────────────────
Rewrite DNMLサンプル




3.画像を表示してみる

(1)背景表示タグ
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BACKGROUND SRC="g00/BG002.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
────────────────────
画像ファイル名の代わりに、テンプレート.dnmlの中で定義されている別名(ALIASといいます)を使用することもできます。
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BACKGROUND SRC="教室" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
────────────────────

(2)人物表示タグ
ENTERで登場させる人物の表示設定を行い、ACTで実際に表示を行います。
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BACKGROUND SRC="教室" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ENTER NAME="人物" VALIGN="ROOF">
<ACT NAME="人物" SRC="g00/cgm_kt10.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
────────────────────
一度ENTERしておけば、次に表情やキャラクターを変えるときは、ACTだけでOKです。
(すでにENTERしているのに、もう一度同じ人物名でENTERを実行しようとするとエラーになります)
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BACKGROUND SRC="教室" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ENTER NAME="人物" VALIGN="ROOF">
<ACT NAME="人物" SRC="g00/cgm_kt10.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ACT NAME="人物" SRC="g00/cgm_kt12.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>って、それだけかーい!」</INDENT><P>
────────────────────

(2)人物消去タグ
人物を消去するもっとも標準的な方法はEXITを使う方法です。
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BACKGROUND SRC="教室" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ENTER NAME="人物" VALIGN="ROOF">
<ACT NAME="人物" SRC="g00/cgm_kt10.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ACT NAME="人物" SRC="g00/cgm_kt12.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>って、それだけかーい!」</INDENT><P>
<EXIT NAME="人物">
────────────────────
ただし、一度EXITしてしまうと、人物を再登場させる際にもう一度ENTERを行う必要があるため、それが面倒な場合は『ACTで透明な画像を表示する』という方法もあります。
この場合、人物は見えていないだけでEXITはしていませんので、再ENTERが不要になります。
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BACKGROUND SRC="教室" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ENTER NAME="人物" VALIGN="ROOF">
<ACT NAME="人物" SRC="g00/cgm_kt10.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ACT NAME="人物" SRC="g00/cgm_kt12.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>って、それだけかーい!」</INDENT><P>
<ACT NAME="人物" SRC="Rewrite/cg/SIRO.BMP" FOLDER="PLAYER">
────────────────────
『Rewrite/cg/SIRO.BMP』は、背景ファイル名と同様にALIASで別名がつけられていますので、以下のように置き換えることもできます。
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BACKGROUND SRC="教室" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ENTER NAME="人物" VALIGN="ROOF">
<ACT NAME="人物" SRC="g00/cgm_kt10.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ACT NAME="人物" SRC="g00/cgm_kt12.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>って、それだけかーい!」</INDENT><P>
<ACT NAME="人物" SRC="退場" FOLDER="PLAYER">
────────────────────




4.BGMや効果音を鳴らしてみる

(1)BGM再生/停止タグ
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BGM SRC="Fertilizer" FOLDER="rewrite">
<BACKGROUND SRC="教室" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ENTER NAME="人物" VALIGN="ROOF">
<ACT NAME="人物" SRC="g00/cgm_kt10.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
</BGM MODE="PASS" TIME="500">
<ACT NAME="人物" SRC="g00/cgm_kt12.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>って、それだけかーい!」</INDENT><P>
<ACT NAME="人物" SRC="退場" FOLDER="PLAYER">
────────────────────
/BGMのTIMEには、BGM停止持のフェードアウト時間を指定します。
ここでは500を指定しているので、500ミリ秒かけて徐々に音が小さくなっていきます。

(2)効果音再生タグ
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BGM SRC="Fertilizer" FOLDER="rewrite">
<BACKGROUND SRC="教室" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ENTER NAME="人物" VALIGN="ROOF">
<ACT NAME="人物" SRC="g00/cgm_kt10.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
</BGM MODE="PASS" TIME="500">
<ACT NAME="人物" SRC="g00/cgm_kt12.g00" FOLDER="rewrite">
<SOUND SRC="wav\kick.nwa/to.wav" FOLDER="rewrite" MODE="PASS">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>って、それだけかーい!」</INDENT><P>
<ACT NAME="人物" SRC="退場" FOLDER="PLAYER">
────────────────────
ちなみに効果音の停止には/SOUNDを使用します。




5.仕上げ

(1)ぐるぐるを表示する
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BGM SRC="Fertilizer" FOLDER="rewrite">
<BACKGROUND SRC="教室" FOLDER="rewrite">
<ALIAS SRC="サークル画像" DEST="Rewrite\cg\circle_30.png">
<INCLUDE SRC="Rewrite\circle.inc" FOLDER="PLAYER">
<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
<ENTER NAME="人物" VALIGN="ROOF">
<ACT NAME="人物" SRC="g00/cgm_kt10.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>
</BGM MODE="PASS" TIME="500">
<ACT NAME="人物" SRC="g00/cgm_kt12.g00" FOLDER="rewrite">
<SOUND SRC="wav\kick.nwa/to.wav" FOLDER="rewrite" MODE="PASS">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>って、それだけかーい!」</INDENT><P>
<ACT NAME="人物" SRC="退場" FOLDER="PLAYER">
────────────────────

(2)完成
自分が作りやすいように適度に改行を入れたりするのもお勧めです。
────────────────────
<INCLUDE SRC="環境設定.dnml" FOLDER="PLAYER">
<INCLUDE SRC="Rewrite/テンプレート.dnml" FOLDER="PLAYER">

<BGM SRC="Fertilizer" FOLDER="rewrite">
<BACKGROUND SRC="教室" FOLDER="rewrite">
<ALIAS SRC="サークル画像" DEST="Rewrite\cg\circle_30.png">
<INCLUDE SRC="Rewrite\circle.inc" FOLDER="PLAYER">

<ALIAS SRC="名前" DEST="瑚太朗"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>

<ENTER NAME="人物" VALIGN="ROOF">
<ACT NAME="人物" SRC="g00/cgm_kt10.g00" FOLDER="rewrite">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>Hello<NL>World!」</INDENT><P>

</BGM MODE="PASS" TIME="500">

<ACT NAME="人物" SRC="g00/cgm_kt12.g00" FOLDER="rewrite">
<SOUND SRC="wav\kick.nwa/to.wav" FOLDER="rewrite" MODE="PASS">
<ALIAS SRC="名前" DEST="小鳥"><INCLUDE SRC="Rewrite/name.inc" FOLDER="PLAYER">
「<INDENT>って、それだけかーい!」</INDENT><P>

<ACT NAME="人物" SRC="退場" FOLDER="PLAYER">
────────────────────




6.おわりに

(1)他の作者さんのDNMLを見てみる
ここまで書いたのは、あくまで一番基本的な部分だけなので、DNMLにおける様々なテクニックの1割も使っていません。
あとはDNMLのマニュアルを読んだり、他の作者さんの作品をテキストエディタで開いてみたりしながら勉強していくのが一番ではないかと思います。
ちなみに参考にするなら、最初はできるだけシンプルなブックのほうがわかりやすいです。
『男達のセツブン』などは、やっていることが高度すぎて、中を見てもよくわかりませんでした^^;
私の場合は『とーかさん小ネタ』とか『リトルフーキーン小ネタ』あたりをとっかかりにしました。

(2)便利ツールを導入する
メモ帳だけでもDNMLは作れますが、もっと多機能なテキストエディタや、Susie(プラグインを入れることで様々な画像ファイルを開くことができる)のような画像ビューワを導入したほうが、より効率的に開発ができます。
私はメインのテキストエディタにはサクラエディタを使っていますが、サクラエディタだと『Ctrl+B』で直接DNMLを起動できたりもするので、かなり便利です。
Susieのほうはカタログ機能が特に便利なのですが、Window 7などでは上手く動かないこともあるようです…。

戻る