创建新的剧本

创建新的剧本 #


先决条件 #

你需要先安装本 mod,并且在安装完成后启动一次游戏,确保mod可以被正确加载(即可以正常游玩二创剧本)
请完全遵守 《魔法少女的魔女审判》直播・二次创作指南


从模板创建 #

  1. 剧本模板 #

    打开Mod安装包,在ManosabaMod目录下找到SherryAppleJuice_ExampleMod文件夹 样例剧本

  2. 复制模板 #

    复制整个文件夹,将文件夹改名为你的剧本ID

    建议剧本ID按照一个不容易重复的英文ID+剧本英文名称+一个数字编号这样的格式,这里的英文ID可以用一个个性的网名,随机乱码或者你的B站UID,尽量避免和别人产生碰撞就行

    比如 SherryAppleJuice_TestMod000,其中SherryAppleJuice是网名,TestMod是本英文名称,000是编号

    如果剧本ID冲突
    剧本ID冲突的话,就会出现剧本里的内容相互穿越的情况

  3. 修改目录 #

    修改目录结构,将原来叫做SherryAppleJuice_ExampleMod的文件夹全部改为新的剧本ID,类似这样

    新剧本结构

  4. 修改配置 #

    进入新的剧本文件夹,修改info.json文件

    {
        "Name":"测试用例",
        "Description":"测试用例",
        "Author":"雪莉苹果汁",
        "Enter":"SherryAppleJuice_ExampleMod/Main",
        "Version":"1.0.0"
    }
    

    打开info.json文件,将上面的json字符串复制进去

    按照自己的需要修改各个属性,Name是你的剧本名字,Description是剧本描述,Author是你想留下来的笔名,Version是剧本的版本

    关键点是Enter,这个属性的含义是你的剧本的入口点。内容是相对于Scripts目录的剧本入口文件的相对路径

    这里样例剧本的入口点文件为SherryAppleJuice_TestMod000\Scripts\SherryAppleJuice_TestMod000\Main.nani,那么Enter的相对路径为SherryAppleJuice_TestMod000\Main

    修改后的样子大概是:

     {
         "Name":"修改后的剧本名称",
         "Description":"修改后的剧本描述",
         "Author":"你的名字,不要填韦一敏",
         "Enter":"SherryAppleJuice_TestMod000/Main",
         "Version":"1.0.0"
     }
    
  5. 修改剧本内跳转 #

    打开剧本内的.nani格式文件,搜索所有的SherryAppleJuice_ExampleMod,替换为你的新剧本ID,类似这样:

    修改nani

  6. 完成 #

    这样一个新的剧本就完成啦!启动游戏点击开始游戏,就可以看到你的剧本了,把这个剧本文件夹发给其它小伙伴,也可以看到这个剧本啦

    修改后效果展示


从剧本工作空间创建(本方式不成熟,存在包括外部立绘无法加载在内的一些问题,如果遇到BUG,优先尝试关闭看看是否恢复) #

  1. 启用 MOD 的创作者模式 #

    找到游戏的根目录(即游戏程序manosaba.exe的所在目录),可以通过 steam,在库中找到魔审,依次点击 右键游戏 -> 管理 -> 浏览本地文件 来找到

    进入 <游戏根目录>/BepInEx/config 文件夹,通过记事本等文本编辑器打开 ManosabaLoader.cfg 配置文件,关注下面的内容

    [Scripting]
    
    ## 是否启用剧本编辑模式(创作者使用)
    # Setting type: Boolean
    # Default value: false
    EnableScriptingMode = false
    
    ## 剧本工作区路径(创作者使用)
    # Setting type: String
    # Default value:
    WorkspacePath = 
    

    我们需要把配置文件中的 EnableScriptingMode 设置为true,并且把 WorkspacePath 设置为您打算制作的mod的存放路径

    例如我想要制作一个名为 SherryAppleJuice_ExampleMod 的mod,然后我想把它放在 D:/manosaba_fan/ 下,最终的配置文件如下

    [Scripting]
    
    ## 是否启用剧本编辑模式(创作者使用)
    # Setting type: Boolean
    # Default value: false
    EnableScriptingMode = true
    
    ## 剧本工作区路径(创作者使用)
    # Setting type: String
    # Default value:
    WorkspacePath = D:/manosaba_fan/SherryAppleJuice_TestMod000
    

    最终剧本文件会被放置在 D:/manosaba_fan/SherryAppleJuice_TestMod000/Scripts/SherryAppleJuice_TestMod000/ 目录内

    mod文件夹的建议命名方式
    建议剧本 ID 按照一个不容易重复的英文 ID+剧本英文名称+一个数字编号这样的格式,这里的英文 ID 可以用一个个性的网名,随机乱码或者你的 B 站 UID,尽量避免和别人产生碰撞就行

    比如 SherryAppleJuice_TestMod000,其中 SherryAppleJuice 是网名,TestMod 是本英文名称,000 是编号(版本号之类的)

    如果剧本 ID 冲突
    剧本 ID 冲突的话,就会出现剧本里的内容相互穿越的情况

  2. 生成mod信息文件 #

    在steam中启动游戏,等到游戏进入了主菜单之后就会发现上面设定的路径已经被创建出来了,并且里面还包含了一个 info.json 文件,此时我们把游戏关掉,然后用文本编辑器打开 info.json,由于自动生成的没有换行,所以你也可以选择复制下面的内容进去

    {
        "Name": "测试用例",
        "Description": "测试用例",
        "Author": "雪莉苹果汁",
        "Enter": "SherryAppleJuice_TestMod000/Main",
        "Version": "1.0.0"
    }
    

    按照自己的需要修改各个属性,Name 是你的剧本名字,Description 是剧本描述,Author 是你想留下来的笔名,Version 是剧本的版本

    关键点是 Enter,这个属性的含义是你的剧本的入口点。内容是相对于 Scripts 目录的剧本入口文件的相对路径

    这里样例剧本的入口点文件为SherryAppleJuice_TestMod000\Scripts\SherryAppleJuice_TestMod000\Main.nani,那么 Enter 的相对路径为SherryAppleJuice_TestMod000\Main

    修改后的样子大概是:

    {
        "Name": "修改后的剧本名称",
        "Description": "修改后的剧本描述",
        "Author": "你的名字,不要填韦一敏",
        "Enter": "SherryAppleJuice_TestMod000/Main",
        "Version": "1.0.0"
    }
    
  3. 创建mod基本架构 #

    通过steam打开再一次游戏,如果没有问题,那么在刚刚的配置的工作目录(D:/manosaba_fan/SherryAppleJuice_TestMod000)中已经生成了如下结构的文件

    项目结构

    其中

    • NaninovelData 文件夹存放的是 游戏和编辑器交互用的元数据,用于代码智能提示等,发布时 一定不要 带上
    • Scripts 文件夹存放的是 剧本文件
    • Text 文件夹存放的是 本地化文件

    接下来我们需要创建两个必要的文件 #

    剧本入口文件

    <mod根目录>/Scripts/ 文件夹中,按照上一步在 info.json 中定义的 Enter 创建剧本文件

    例如在上一步中,我的 EnterSherryAppleJuice_TestMod000/Main,那么我就需要在 D:/manosaba_fan/SherryAppleJuice_TestMod000 内创建一个名为 SherryAppleJuice_TestMod000 的文件夹,再在里面创建一个 Main.nani 文件,这个文件就是我们的mod的主入口,当加载这个mod的时候,会从这一个剧本开始执行

    本地化文件

    你可能会好奇,我只需要支持一种语言,也要这个吗?
    是的,即便如此,你也需要按照要求创建本地化文件

    <mod根目录>/Text/Scripts 文件夹中,复刻你在 <mod根目录>/Scripts/ 中放置的所有剧本文件的结构,并且把剧本文件的后缀名从 .nani 改成 .txt

    例如我在上一步中,在 <mod根目录>/Scripts 文件夹中创建了 SherryAppleJuice_TestMod000 文件夹,并且在里面又创建了 Main.nani 文件,那么我就需要同样地在 <mod根目录>/Text/Scripts 文件夹中创建 SherryAppleJuice_TestMod000 文件夹,并且在里面创建一个名为 Main.txt 的文件(内容可以是空的)

    最后大概有这些文件

    最后的文件结构

  4. 开始创作 #

    目前基于Naninovel官方提供的剧本编写方式,有两种选择,分别是

    你甚至可以同时使用两种办法来编写剧本

    看看示例脚本
    打开 Mod 安装包,在 ManosabaMod 目录下找到
    SherryAppleJuice_ExampleMod 文件夹
    样例剧本

  5. 在游戏内看看成果 #

    在游戏主菜单点击 New Game,可以看到这里多了一个以 工作区: 开始的按钮

    游戏内多了一个进入工作区mod的按钮

    点击了之后就可以玩你的剧本了

  6. 分享剧本 #

    你现在已经可以把 mod根目录 整个作为剧本发布了(即复制整个文件夹到 <游戏根目录>/ManosabaMod 文件夹中)

    但是我们建议你先 复制一份你的mod到别处,做一些预处理再压缩打包发布

    1. 出于 《魔法少女的魔女审判》直播・二次创作指南,我们 强烈建议 您先把mod文件夹中的 NaninovelData 文件夹 整个删除,因为里面包含了一些游戏内部的元数据
    2. 如果你有洁癖,还可以把所有的 .meta 文件删除(如果有的话)

使用vscode进行剧本创作 #

官方说明

  1. 安装VSCode #

    这就不用教了吧…
    不会的话就去用网页编辑器

  2. 打开工程 #

    打开文件夹,选择 <mod根目录>

    VSCode打开文件夹

    如果弹出是否信任文件夹的发布者,请点击

    接下来我们就可以在vscode里编辑剧本文件了

    VSCode打开了一个剧本文件

  3. 安装 naninovel 扩展 #

    但是现在写剧本文件和用记事本写没什么差别,所以我们需要用安装一下naninovel扩展

    在扩展商店里搜索 naninovel 然后安装

    vscode搜索naninovel扩展

    然后我们就可以发现我们的vsc在编辑剧本文件的时候就拥有了关键词上色、语法错误检测、函数提示等功能了

    vscode安装了naninovel扩展

    接下来就可以愉快地在vscode里写剧本了,并且如果保存的剧本文件就是游戏内正在播放的剧本,游戏还可以自动更新呢(如果这一行已经播放了就不行)


使用网页编辑器进行剧本创作 #

官方说明

  1. 打开 Naninovel官方网页编辑器 #

    第一次打开Naninovel官方网页编辑器

  2. 选择编辑器用户偏好数据保存位置 #

    这里Naninovel的网页编辑器在让我们选一个位置用来保存你的偏好数据,那么我们按照他的建议,在 C/Users/<用户名>/ 里新建一个 .nani 文件夹

    然后点击网页上的 Select Directory 按钮,选择我们刚刚新建的 C:/Users/<用户名>/.nani 文件夹

    网页编辑器选择用户偏好数据保存路径

  3. 选择工程位置 #

    接下来他会问我们要打开一个已有的工程还是创建一个新的沙盒工程

    网页编辑器让你设置工程

    我们点击 Open Project 来打开现有的工程,这里一定一定要确保进入了mod根目录之后不要再点其他文件夹,立刻点击 选择文件夹 那个确定按钮

    网页编辑器让你打开工程

    然后我们就进入了网页编辑器,

    网页编辑器打开成功

    左侧的 Files 是工程的结构,包含了你的所有剧本文件
    下面的 Graph 是剧本之间的跳转图
    中间的 Game 没有用
    右侧的 Settings 是网页编辑器设置,你可以编辑器字体啥的
    右侧的 Inspector 是某个命令的参数,在你通过 Files 打开了某个剧本并选中某条命令之后,这里就会出现东西

    不要删掉.beacon.nani
    否则下面的部分功能会失效

    建议布局 #

    你可以像我这样布局

    建议布局

    点击网页编辑器右上角的 Wide 改成 Tall 即可

  4. 验证编辑器和游戏是否正常通信 #

    当你网页编辑器刚刚打开工程,并且游戏正在运行的时候,你可能会发现上面的按钮是灰色的

    灯灭了

    这个时候你只需要在游戏内随便进入一个剧本点两下

    灯亮了

    就会发现这个灯又亮了

  5. 网页编辑器食用事项 #

    当前播放剧本行号高亮 #

    如果游戏内正在播放的脚本是工作区的脚本,那么会自动同步播放状态
    如图,当游戏播放到艾玛的这句的时候,编辑器的这一块也会自动亮起

    Playback状态同步

    跳转播放 #

    在网页中找到你的脚本,右键某一行,点击 Play Line,游戏会跳转到这个脚本的这一行来

    Goto

    (建议你在通过主菜单进入你的剧本之后再使用这个功能,否则可能会有奇怪的bug)

    热重载 #

    当你修改了脚本,按下 Ctrl+S (或者点击右上角的保存图标),如果游戏当前播放的脚本也被更改了的话,脚本会被自动热重载而无需重进游戏