前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >太吾绘卷多分支选择的一些代码实现方式

太吾绘卷多分支选择的一些代码实现方式

作者头像
沙因Sign
发布2018-10-22 09:49:20
1.7K0
发布2018-10-22 09:49:20
举报
文章被收录于专栏:Sign

最近有一款国产游戏『太吾绘卷』很火。这个游戏怎么归类比较麻烦,从整体上来说,这是款『文字冒险类』游戏,而它的文案数值以及系统水平很高。

决定一款游戏成就的往往是游戏的长处,而太吾绘卷的优点,明显就是那过硬的文字功底以及完整的数值系统。

当然,仅仅只有这两个因素顶多让那其成为一个『好玩』的游戏,而成为爆款的原因则是这个游戏以及制作团队有着太多为人乐道的梗(比如蛐蛐邪教啥的)

其中有一个梗就是关于这款游戏代码的。因为制作者只学了一个月编程就上阵了,所以『俺寻思着这行代码能不能跑,结果就真的能跑,还没bug!』

关于这个代码梗,出现了几种声音,一般情况下,大家都视制作者为神人,自学代码一个月就能写游戏了。

也有人反而还会发出『人家学一个月就能做游戏了,程序员是不是要失业了?』

这让我想起某个地方看到的一个争论:

一个开发对产品说,产品也许可以去稍微学一点代码相关知识比较好。

产品:『没有必要!』

我看到很多美术自学代码,最后独立制作出游戏的。

我看到很多音乐人自学代码,最后独立制作出游戏的。

太吾这个是我见到第一个文案以及逻辑功底深厚的人自学代码,最后制作出游戏的。

所以我讨厌前面那种『没有必要』的人。

我一个游戏人,天天翻各种资料,上搜天文下查地理,不仅要亲自打代码不说,还要自己画图,自己谱曲(后来搁置了),自己搞宣传,来实现自己的游戏,而这些家伙仅仅是多了解一点代码逻辑思维就一句『没有必要』?(/// ̄皿 ̄)○~md

空谈点子创意的人,就像lol里进来秒选adc,结果你一看,他补兵(程序)不行走位(美术)不行,团战一开始就被秒了(策划案跟si一样),在泉水里bb(我的创意天下无敌),『你们不保护adc玩什么?』。

而这种人如果得到一个好的团队,被打野中单上单辅助无限保护喂经验,形成等级装备压制,16级多4无尽,一枪点了对方8级adc,于是洋洋自得,『看我多牛逼,哥一神带4眼』

有这样的装备和等级压制的话,鼠标点击一下对面的adc是很难的操作吗?

实际上,借助引擎学习制作游戏,一个月时间是够的,至少能开始制作了。

事实上,我也多次强调『开始动手』制作游戏,『不会代码可以学』,但是似乎也是没什么人理解。

最近开始悟到一些东西,虽然一直在输出自己那笔直的游戏三观,但那一点用也没有,不会为我带来什么利益不说,反而会给我增添不少糟心事。

比如有些人受到塞尔达影响而制作出以撒,而有些人受到塞尔达影响,做出塞尔大,而且还会告诉你,这过程有多不容易……

(○´・д・)ノ是啊,把 达 字改成 大 字是挺不容易的。


再这样吐槽下去,就完蛋了。

想来想去,还是好好发挥自己的优势比较好,目前在门面上被有所承认的只有代码这一块。所以,暂时还是先利用这个好了。

(当然,希望让我以程序员的身份来合作进行制作游戏的话,我拒绝,不管是以前还是以后)

<(* ̄▽ ̄*)/ 如果你是以金主流量主身份来合作的话,我们坐下来好好谈……

先尝试着讲一下这个。

多项分支。(就是选择题界面)

我没有直接的看过游戏的代码,但是据说制作者用来一万多个if。

也就是说,这种情况下,多分支的代码是这样的(之后的代码全都以js为例):

这里每个事件选项都这样嵌套判断的话,if数量自然而然就上去了。

毕竟是才接触代码一个月的同学写的,用简单明了的方式来完成需求无可厚非。

而且因为这种方式太过于直白,所以不会出现bug,除非制作者把标点符号写错了。(从侧面来说,一些关于代码的梗里面,其他专业程序员都看不懂这一条明显是假的,程序员应该是看的懂,不过应该会觉得头大)

当然,这样的话,也有同学会觉得,if太乱,那么用switch吧。

emmm……

首先这两段是不等价的……

当然,并不是说这些代码写法是错的,这样写也有其优点——简单明了。

但实际上存在很大的优化空间,比如这样的:将子轮询抽离出来。

再进一步优化则是这样:

也就是,所有的多重分支抽离出一个公共方法,而这个方法通过传入不同的参数,来组合成合适的当前选项分支函数。

这样一来,所有的条件分支可以抽离出来,以更容易管理的数据格式来存储。


一些比较简单的分支类游戏,这样的逻辑就足够了,但是像文字冒险类这类型的游戏,对分支的把控要求比较高,所以单一的数据结构是不足以管理整个游戏的剧情。

这里可以多引入几个不同表达的数据,然后中间增加一个关联数据来进行嵌套检索。

例如这样

数据拼接则很简单

当然,这样的话,里面的数据关系其实从代码层面看反而不如直接几百个if来的直观。

所以,为了更直观的制作游戏分支,我们需要额外写个『分支生成』工具。

而制作分支生成工具需要的代码水平就要稍微更进一步了。实际上程序员大部分的工作内容就是做这些『辅助工具』。

当工具完成后,游戏的分支填入生成就变得容易了。


当然,这里提供的方案并不一定是最优解,因为考虑到『选项复用』的问题,利用了json检索的优势,所以数据结构分解的比较特别,实际上,这样的剧情分支也可以使用字典树进行管理

以上只是我个人的一个想法,就当给大家提供一些思路。

至于上面的demo可以查看小红帽

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Sign 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档