我曾将想过实现一个类似对话决策的游戏,大概流程就是玩家和电脑对话。 最后得到一个游戏成功或者失败的结果。 不知道这类的游戏模式、或者开发的程序称为什么,我暂且是叫做“对话树”不知道是否准确。
问题是这样,如果我用 Java 或者 C# 制作的话,如何去完成这样的程序?
我想过每个问题可能有若干个回答,每个回答可能会将故事指向不同方向的结局,难道是用 if else 不断的往下写,还是有某种成熟的设计模式能够完成这样的需求?
这个问题我想了很久了,有说用游戏引擎能做的,但是我一直都没有想通是如何实现的。。
我也同样好奇,类似 10010、10000 这类客服电话,是如何根据用户的选择进入不同的菜单的。这两者有点类似吧?
希望有大神不吝赐教,我想了好久了。。。
1
xbigfat OP 我用 C# 框体写过,但是没想好如何组织数据来复用框体。点一下弹出一个新窗体的话,可能最后一桌面都是框体吧。。。
|
2
across 2018-07-13 16:34:23 +08:00 via iPhone 1
搜状态机,或者行为树。
|
3
imn1 2018-07-13 16:35:03 +08:00 1
你说的是界面?
没写过 GUI 么?虽然我没写过 C#,但我知道 winform 可以单控件 refresh 啊,数据传过去 refresh 就是了 不懂怎么会有一堆 form 的想法 游戏我更加少接触,不过用游戏引擎应该更简单 |
4
across 2018-07-13 16:42:04 +08:00
一般复杂条件控制都用状态机来管理,比较方便,怎么写的话···找本 AI 基础书看看,大学学过数据结构应该没问题。
想要直观点的感受的话··· 懂 C#可以试试看,Unity3D 有个叫 Playmaker 的插件,大约能看懂。 这本书第 9 章 https://book.douban.com/subject/26313534/ 就是控制 RPG 事件和对话的,你可以在网上下个源代码参考,不过这个例子以教学为主,所以引申到了脚本撰写来控制(现代编辑器一般都有可视化界面)。 |
5
xbigfat OP |
7
xbigfat OP @across 厉害了。刚刚看到橙光就可以。不过总的来说,这种东西落到代码上,我还是觉得很难做,可能是我学识不够吧 hhh,感谢指点
|
8
viator42 2018-07-13 17:15:37 +08:00
你说的是类似文字 avg 游戏那种的多结局吗
我见过的有两种实现思路 一个是单纯的树状结构,选不同的分支进不同的结局.另一种是定义几个数值,每次选择的时候增减.最后根据数值判定结局 |
9
asd123456cxz 2018-07-13 17:20:57 +08:00
生命线系列 或者 异次元通讯系列?这两个游戏大概就是你想实现的那种吧
我觉得你可以直接从这两款游戏的制作方式入手。。虽然我也不懂 其实我更喜欢橙光的。。 |
11
Natsumoku 2019-05-21 07:40:15 +08:00 1
Github 上有几个 repo 是关于制作这种游戏的辅助工具的。
最热门的应该是这个: https://github.com/thesecretlab/YarnSpinner 这也是游戏 Night in the Woods (一个很不错的以对话为主的剧情向游戏)制作者使用的工具,能胜任比较复杂的选择分支之类的。因为是开源的,所以你如果对原理感兴趣,不妨去看看它的实现。 另一个开源工具: http://twinery.org/ 另外还有一个专业的收费软件,专门用来创造多线对话用的,叫做 Articy Draft,可以定义各种全局变量,在指定的时间点更新它们的值,作为进入 /不进入某个分支的条件,总的来说自由度很高。 |