七度文庫ソースコード解説


  1. はじめに
  2. 七度文庫のソースコードは七度言語で記述されている。
    ソースコードは、項目ごとに分割してディレクトリーに納められている。
    分割したソースをコピーコマンドを使ってつなぎ合わせて一つにして、
    コンパイラのソースコードに変換している。
    官能描写の部分は、過激描写版と、制限版の両方が作成してあり、
    どちらかをソースコードに連結する。
    したがって、制限版の七度文庫のプログラムにパッチを入れても過激描写ができるようにはならない。
    ソースコードのすべてはあまりに量が多いために、html文章での公開は
    困難である。
    主要なアルゴリズムについて、ソースコードを紹介して解説を行いたい。

  3. 最初のスタート部

  4. 七度言語では小説のスタートは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

  5. シナリオの分岐による自動生成
  6. シナリオの分岐を用いて、いろいろなシナリオを自動生成する事が出来る。
    例として、

    喫茶店でアルバイトをする

    のシナリオについて記載する。
    ソースコードを直接読むのはかなり分かりづらいが、

    喫茶店でアルバイトするきっかけが」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



  7. シナリオの組み込みによる手法
  8. シナリオのすべてを自動生成させるのは、かなり難しい。
    いくつかのシナリオについては、ストーリをあらかじめ組み込んである。

    七度言語では、組み込みシナリオのストーリの展開は自分で考えて作らないといけない。

    将来はメタ言語を作成して、これらのシナリオのソースコードを自動出力させるようにしたい。

    以下の例はかなり冗長で無駄の多いコードではあるが、もっと簡約化したコードに書き換えることも可能である。
    手作業で簡約化を行うのはかなり大変なので、
    コードの簡約化についてはも将来は自動的に行うようにしたい。



    select 親戚の女の子が原宿でナンパされる
    親戚の女の子が原宿でナンパされ着替えて相手にされない
    親戚の女の子が原宿でナンパされ着替えて相手にされないのでスカートを短くする
    親戚の女の子が原宿でナンパされ私も着替える
    親戚の女の子が原宿でナンパされ私も着替えカラオケで二人レイプ
    親戚の女の子が原宿でナンパされカラオケに呼び出される
    end
    select 親戚の女の子が上京する
    親戚の女の子がディズニーランドに遊びに来る
    親戚の女の子がテレビの公開放送で上京する
    end
    scene 親戚の女の子が原宿でナンパされ着替えて相手にされない
    {章番号}
    {親戚の女の子が上京する}
    {章番号}
    {親戚の女の子と原宿でナンパされる}
    {章番号}
    {親戚の子が駅で着替える}
    {親戚の子が着替えると相手にされない}
    {私も学生服に着替える}
    {親戚の子と間違えられてカラオケに誘われる}
    end
    scene 親戚の女の子が原宿でナンパされ着替えて相手にされないのでスカートを短くする
    {章番号}
    {親戚の女の子が上京する}
    {章番号}
    {親戚の女の子と原宿でナンパされる}
    {章番号}
    {親戚の子が駅で着替える}
    {親戚の子が着替えると相手にされない}
    {買い物をしてからもう一度ロッテリアに行く}
    {親戚の子とカラオケでレイプ}
    end
    scene 親戚の女の子が原宿でナンパされ私も着替える
    {章番号}
    {親戚の女の子が上京する}
    {章番号}
    {親戚の女の子と原宿でナンパされる}
    {章番号}
    {親戚の子がトイレでフェラチオする}
    {章番号}
    {親戚の子がブランド品の買い物をする}
    {私も学生服に着替える}
    {ロッテリアのトイレで二人フェラチオさせられる}
    {親戚の子と間違えられてカラオケに誘われる}
    end
    scene 親戚の女の子が原宿でナンパされ私も着替えカラオケで二人レイプ
    {章番号}
    {親戚の女の子が上京する}
    {章番号}
    {親戚の女の子と原宿でナンパされる}
    {章番号}
    {親戚の子がトイレでフェラチオする}
    {章番号}
    {親戚の子がブランド品の買い物をする}
    {私も学生服に着替える}
    {ロッテリアのトイレでフェラチオさせられる}
    {親戚の子がミニスカートでロッテリアに来ている}
    {親戚の子とカラオケでレイプ}
    end
    scene 親戚の女の子が原宿でナンパされカラオケに呼び出される
    {章番号}
    {親戚の女の子が上京する}
    {章番号}
    {親戚の女の子と原宿でナンパされる}
    {章番号}
    {親戚の子が駅で着替える}
    {親戚の子がカラオケから電話してくる}
    {女友達はカラオケ店にもういない}
    {ラブホテルに迎えに行き二人レイプ}
    end

  9. 官能描写の生成手法
  10. 官能小説の官能描写部は、どれでもみんな同じような文章である。
    同じような文章が延々と続くのを書くのは、書き手にとっても手間がかかるだけである。
    官能描写くらいだったら、簡単な手法でも、それらしい描写は自動生成できる。
    官能描写部もシナリオ生成部と同じ七度言語を使用して記述している。
    文章をより細かく分割し、毎回違う文章が生成されるように工夫している点が異なるだけである。

    基本的手法は、

    基本的なテンプレートの文章を複数用意する。

    テンプレートの文章を細かい文章単位に分割する。

    文章単位が毎回違う表現で生成されるようにする。


    という手順で行われる。

    また、特定の性行為テクニック等を一つか、二つ程度
    強調して盛り込んで、文章に毎回異なる印象を与えるようにしている。

    服装、場所、男性の性格などの指定により、
    基本的なテンプレートや、性行為テクニックは別途に選択される。