Nekopara
在游戏中,我们总是会见到上图这种剧情对话功能,它在很多尤其中,尤其是galgame中,起着重要的作用。
那么,这样的系统,要怎么做呢?
我们可以大致分为两部分:对话剧情的编写
运行编写好的剧情内容
其实在我看来,做这么一套系统,最大的难点,其实是在第一条:怎么设计一套编写剧情对话的东西。
在我这种典型的程序员的视角来看,直接拿Lua脚本写剧情就非常棒,比如这样:
local dialogue = {}
local Mgr = XCore.Drama.DialogueManager;
dialogue[1] = Mgr.Say("史莱姆","我也是个广东人,所以我们是老乡");
dialogue[2] = Mgr.Say("哥布林","花~Q");
dialogue[3] = Mgr.Say("史莱姆","oh, 花可U,Leather Man~");
return dialogue;
这样对于程序员来说,显然是最爽的,你甚至不用刻意去解析它,拿到数据之后直接就可以运行了。但是问题是,一般在做游戏的时候,都不是程序员去编写剧情脚本的,而是文案啊、策划啊之类的。你让非程序工作者去直接写Lua,先不说会不会出错,他们肯定会先想着怎么把程序员打一顿的。
所以,这样是行不通的,那有没有其他方案呢。