七度文庫ソースコード解説
- はじめに
七度文庫のソースコードは七度言語で記述されている。
ソースコードは、項目ごとに分割してディレクトリーに納められている。
分割したソースをコピーコマンドを使ってつなぎ合わせて一つにして、
コンパイラのソースコードに変換している。
官能描写の部分は、過激描写版と、制限版の両方が作成してあり、
どちらかをソースコードに連結する。
したがって、制限版の七度文庫のプログラムにパッチを入れても過激描写ができるようにはならない。
ソースコードのすべてはあまりに量が多いために、html文章での公開は
困難である。
主要なアルゴリズムについて、ソースコードを紹介して解説を行いたい。
- 最初のスタート部
七度言語では小説のスタートはtitle文から始まる
七度文庫の制限版のtitle文は次のように記述されている
タイトル文が
アルバイト
デートに誘われる
偶然
旅行1
旅行2
暴行
風俗
の七つに分類されているのは、シナリオの出現確率を調整するためである。
最初の起動では各グループから一つづづシナリオが選択されるので、
同じグループから似たようなシナリオが繰り返し選択されるのを防ぐことができる。
シナリオのタイトルは最初につけた名前であり、
シナリオの修正を繰り返しているので、
実際の中身とはかなり異なる場合もある。
title アルバイト
{アルバイトでレイプされる}
end
select アルバイトでレイプされる
家庭教師のバイトをする
喫茶店でアルバイトする
出版社でアルバイトする
ワープロのアルバイトをする
アルバイトしてお客さんに温泉に誘われる
end
title デートに誘われる
{デートコース}
end
select デートコース
東京タワーに遊びに行く
ディズニーランドに誘われる
歌舞伎に誘われる
文楽に誘われる
映画に誘われる
ライブハウスに誘われる
テニスに誘われる
end
title 偶然
{偶然の出来事}
end
select 偶然の出来事
ライブハウスの帰りにアパートに泊まる
病院にお見舞いにいく
宗教団体の映画に誘われる
古本屋で話しかけられる
更衣室で下着ドロと会う
合コン
友達に紹介される
チアリーダーの代役を女友達に頼まれレイプされる
end
title 旅行1
{旅行先でレイプされる1}
end
select 旅行先でレイプされる1
バス旅行でバスに取り残されてレイプされる話
アルバイトで社員旅行する話
帰りの夜行列車でレイプされる話
旅行先でドライブに誘われレイプされる話
旅行先のロープウェーでレイプされる話
旅行さきのホテルで性感マッサージ
end
title 旅行2
{旅行先でレイプされる2}
end
select 旅行先でレイプされる2
旅行の帰り道車でラブホテルにつれこまれる
旅行先でマッサージしてもらう話
旅行先のホテルでナンパされてレイプされる話
旅行先の建物でレイプされる話
オリエンテーリングで二人レイプされる話
end
title 暴行
{暴行される}
end
select 暴行される
映画館で暴行される
映画館に泊まって痴漢にあう
建物で暴行される
買物で暴行される
帰りに後をつけられてレイプされる話
end
title 風俗
{風俗でレイプされる}
end
select 風俗でレイプされる
下着を売られる
テレクラで知り合った男にレイプされる
テニスのあと暴行される
学生服で盛り場に行き補導される
通販のセールスをする
親戚の女の子が原宿でナンパされる
end
- シナリオの分岐による自動生成
シナリオの分岐を用いて、いろいろなシナリオを自動生成する事が出来る。
例として、
喫茶店でアルバイトをする
のシナリオについて記載する。
ソースコードを直接読むのはかなり分かりづらいが、
「喫茶店でアルバイトするきっかけが」2通りの分岐
「喫茶店での出来事」4通りの分岐
さらに喫茶店での出来事の各シナリオが、複数分岐している。
scene 喫茶店でアルバイトする
{章番号}
{喫茶店でアルバイトするきっかけ}
{喫茶店で面接のあとアルバイトを始める}
{章番号}
{喫茶店での出来事}
end
select 喫茶店でアルバイトするきっかけ
喫茶店の前にアルバイト募集の張り紙を見つける
女友達にアルバイトしないかと誘われる
end
select 喫茶店での出来事
お客さんにコーヒーをこぼす
遅刻でアルバイト代を引かれる
常連のお客さんに飲みに誘われる
常連のお客さんに待ち伏せされる
end
scene お客さんにコーヒーをこぼす
{お客さんにコーヒーをこぼしてしまう}
{お客さんに連れ出される}
end
select お客さんに連れ出される
車はラブホテルに入る
男のマンションにレイプされに連れ込まれる
マクドナルドにレイプされに連れ込まれる
カラオケボックスにレイプされに連れ込まれる
車は私のアパートの近くの公園で止まる
end
もう一つの例
合コン
scene 合コン
{章番号}
{合コンをする場合}
{友達の男の子}
{合コンで飲んだ後の帰り}
end
select 合コンをする場合
文化祭のコーラスのあと合コンをする
オリエンテーリングで帰りに合コンする
サッカーの試合の応援のあと合コンをする
end
select 合コンで飲んだ後の帰り
合コンのあとタクシーで横浜の山下公園に行く
合コンのあと公園でHのあとラブホテル
合コンのあと先輩のアパートに泊まりに行く途中で二人レイプ
end
scene 文化祭のコーラスのあと合コンをする
{文化祭でコーラスのコンサートをする}
{文化祭で時間をつぶす}
{女子大の食堂でコンパをする}
{章番号}
{二次会に居酒屋に誘われる}
{居酒屋で合コンする}
end
scene オリエンテーリングで帰りに合コンする
{大学の授業でオリエンテーリングがある}
{オリエンテーリングで男の子と一緒になる}
{おしゃべりしてオリエンテーリングで最後近くになる}
{最後はクラスごとに集まり帰る}
{章番号}
{居酒屋で合コンする}
{二次会にカラオケに誘われる}
end
scene サッカーの試合の応援のあと合コンをする
{先輩にサッカーの応援を頼まれる}
{章番号}
{テニスウェア姿で応援する}
{試合のあと合コンをする}
{章番号}
{二次会にカラオケに誘われる}
end
- シナリオの組み込みによる手法
シナリオのすべてを自動生成させるのは、かなり難しい。
いくつかのシナリオについては、ストーリをあらかじめ組み込んである。
七度言語では、組み込みシナリオのストーリの展開は自分で考えて作らないといけない。
将来はメタ言語を作成して、これらのシナリオのソースコードを自動出力させるようにしたい。
以下の例はかなり冗長で無駄の多いコードではあるが、もっと簡約化したコードに書き換えることも可能である。
手作業で簡約化を行うのはかなり大変なので、
コードの簡約化についてはも将来は自動的に行うようにしたい。
例
select 親戚の女の子が原宿でナンパされる
親戚の女の子が原宿でナンパされ着替えて相手にされない
親戚の女の子が原宿でナンパされ着替えて相手にされないのでスカートを短くする
親戚の女の子が原宿でナンパされ私も着替える
親戚の女の子が原宿でナンパされ私も着替えカラオケで二人レイプ
親戚の女の子が原宿でナンパされカラオケに呼び出される
end
select 親戚の女の子が上京する
親戚の女の子がディズニーランドに遊びに来る
親戚の女の子がテレビの公開放送で上京する
end
scene 親戚の女の子が原宿でナンパされ着替えて相手にされない
{章番号}
{親戚の女の子が上京する}
{章番号}
{親戚の女の子と原宿でナンパされる}
{章番号}
{親戚の子が駅で着替える}
{親戚の子が着替えると相手にされない}
{私も学生服に着替える}
{親戚の子と間違えられてカラオケに誘われる}
end
scene 親戚の女の子が原宿でナンパされ着替えて相手にされないのでスカートを短くする
{章番号}
{親戚の女の子が上京する}
{章番号}
{親戚の女の子と原宿でナンパされる}
{章番号}
{親戚の子が駅で着替える}
{親戚の子が着替えると相手にされない}
{買い物をしてからもう一度ロッテリアに行く}
{親戚の子とカラオケでレイプ}
end
scene 親戚の女の子が原宿でナンパされ私も着替える
{章番号}
{親戚の女の子が上京する}
{章番号}
{親戚の女の子と原宿でナンパされる}
{章番号}
{親戚の子がトイレでフェラチオする}
{章番号}
{親戚の子がブランド品の買い物をする}
{私も学生服に着替える}
{ロッテリアのトイレで二人フェラチオさせられる}
{親戚の子と間違えられてカラオケに誘われる}
end
scene 親戚の女の子が原宿でナンパされ私も着替えカラオケで二人レイプ
{章番号}
{親戚の女の子が上京する}
{章番号}
{親戚の女の子と原宿でナンパされる}
{章番号}
{親戚の子がトイレでフェラチオする}
{章番号}
{親戚の子がブランド品の買い物をする}
{私も学生服に着替える}
{ロッテリアのトイレでフェラチオさせられる}
{親戚の子がミニスカートでロッテリアに来ている}
{親戚の子とカラオケでレイプ}
end
scene 親戚の女の子が原宿でナンパされカラオケに呼び出される
{章番号}
{親戚の女の子が上京する}
{章番号}
{親戚の女の子と原宿でナンパされる}
{章番号}
{親戚の子が駅で着替える}
{親戚の子がカラオケから電話してくる}
{女友達はカラオケ店にもういない}
{ラブホテルに迎えに行き二人レイプ}
end
- 官能描写の生成手法
官能小説の官能描写部は、どれでもみんな同じような文章である。
同じような文章が延々と続くのを書くのは、書き手にとっても手間がかかるだけである。
官能描写くらいだったら、簡単な手法でも、それらしい描写は自動生成できる。
官能描写部もシナリオ生成部と同じ七度言語を使用して記述している。
文章をより細かく分割し、毎回違う文章が生成されるように工夫している点が異なるだけである。
基本的手法は、
基本的なテンプレートの文章を複数用意する。
テンプレートの文章を細かい文章単位に分割する。
文章単位が毎回違う表現で生成されるようにする。
という手順で行われる。
また、特定の性行為テクニック等を一つか、二つ程度
強調して盛り込んで、文章に毎回異なる印象を与えるようにしている。
服装、場所、男性の性格などの指定により、
基本的なテンプレートや、性行為テクニックは別途に選択される。