V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xbigfat
V2EX  ›  问与答

请问各位关于对话游戏的问题

  •  
  •   xbigfat · 2018-07-13 16:13:19 +08:00 · 1381 次点击
    这是一个创建于 2344 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我曾将想过实现一个类似对话决策的游戏,大概流程就是玩家和电脑对话。 最后得到一个游戏成功或者失败的结果。 不知道这类的游戏模式、或者开发的程序称为什么,我暂且是叫做“对话树”不知道是否准确。

    问题是这样,如果我用 Java 或者 C# 制作的话,如何去完成这样的程序?

    我想过每个问题可能有若干个回答,每个回答可能会将故事指向不同方向的结局,难道是用 if else 不断的往下写,还是有某种成熟的设计模式能够完成这样的需求?

    这个问题我想了很久了,有说用游戏引擎能做的,但是我一直都没有想通是如何实现的。。

    我也同样好奇,类似 10010、10000 这类客服电话,是如何根据用户的选择进入不同的菜单的。这两者有点类似吧?

    希望有大神不吝赐教,我想了好久了。。。

    11 条回复    2019-05-21 07:40:15 +08:00
    xbigfat
        1
    xbigfat  
    OP
       2018-07-13 16:16:13 +08:00
    我用 C# 框体写过,但是没想好如何组织数据来复用框体。点一下弹出一个新窗体的话,可能最后一桌面都是框体吧。。。
    across
        2
    across  
       2018-07-13 16:34:23 +08:00 via iPhone   ❤️ 1
    搜状态机,或者行为树。
    imn1
        3
    imn1  
       2018-07-13 16:35:03 +08:00   ❤️ 1
    你说的是界面?
    没写过 GUI 么?虽然我没写过 C#,但我知道 winform 可以单控件 refresh 啊,数据传过去 refresh 就是了
    不懂怎么会有一堆 form 的想法
    游戏我更加少接触,不过用游戏引擎应该更简单
    across
        4
    across  
       2018-07-13 16:42:04 +08:00
    一般复杂条件控制都用状态机来管理,比较方便,怎么写的话···找本 AI 基础书看看,大学学过数据结构应该没问题。
    想要直观点的感受的话··· 懂 C#可以试试看,Unity3D 有个叫 Playmaker 的插件,大约能看懂。
    这本书第 9 章 https://book.douban.com/subject/26313534/ 就是控制 RPG 事件和对话的,你可以在网上下个源代码参考,不过这个例子以教学为主,所以引申到了脚本撰写来控制(现代编辑器一般都有可视化界面)。
    xbigfat
        5
    xbigfat  
    OP
       2018-07-13 16:56:01 +08:00
    @across 谢谢,一会去看一下。
    @imn1 是的,我知道界面可以单独刷新内容,我的意思是我没想好怎么组织数据,所以新建框体其实是把数据绑定在框体上的。

    @across 想到过状态机了,但是没往下看,有点太复杂了怕方向不对。

    这个想法本身是我一个朋友,妹子想给男朋友写个闯关游戏。。结果妹子问过我之后妹子放弃了,但是这个疑问一直在我的脑海中挥之不去。。。
    across
        6
    across  
       2018-07-13 16:56:47 +08:00
    @xbigfat 这种用 RPG Maker 或者找个 Galgame 制作工具就可以了。
    说不定橙光就 ok···
    xbigfat
        7
    xbigfat  
    OP
       2018-07-13 17:03:47 +08:00
    @across 厉害了。刚刚看到橙光就可以。不过总的来说,这种东西落到代码上,我还是觉得很难做,可能是我学识不够吧 hhh,感谢指点
    viator42
        8
    viator42  
       2018-07-13 17:15:37 +08:00
    你说的是类似文字 avg 游戏那种的多结局吗
    我见过的有两种实现思路
    一个是单纯的树状结构,选不同的分支进不同的结局.另一种是定义几个数值,每次选择的时候增减.最后根据数值判定结局
    asd123456cxz
        9
    asd123456cxz  
       2018-07-13 17:20:57 +08:00
    生命线系列 或者 异次元通讯系列?这两个游戏大概就是你想实现的那种吧
    我觉得你可以直接从这两款游戏的制作方式入手。。虽然我也不懂
    其实我更喜欢橙光的。。
    xbigfat
        10
    xbigfat  
    OP
       2018-07-13 18:08:38 +08:00
    @viator42 嗯,根据数值判断结果也是可以的,但是每个问题是不是只可以加减,没法超过 3 个分支啦?
    Natsumoku
        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,可以定义各种全局变量,在指定的时间点更新它们的值,作为进入 /不进入某个分支的条件,总的来说自由度很高。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1439 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:01 · PVG 01:01 · LAX 09:01 · JFK 12:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.