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

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

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

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

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

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

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

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

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

产品:『没有必要!』

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

先尝试着讲一下这个。

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

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

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

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

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

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

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

emmm……

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

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

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

再进一步优化则是这样:

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

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


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

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

例如这样

数据拼接则很简单

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

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

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

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


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

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

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

原文发布于微信公众号 - Sign(SignACG)

原文发表时间:2018-10-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java学习网

精通型程序员的特点

你知道有能力胜任和精通之间的区别是什么吗? 这听起来像一个很难回答的问题,因为这两者似乎意味着同样的事情。但它们之间的微妙区别至关重要。 有能力胜任是指有足够的...

33160
来自专栏AI科技大本营的专栏

CS 就业寒冬?这里有一份面试必备基础知识

作者 | 阿司匹林 2017 年国家统计局发布消息称,2016 年信息传输、软件和信息技术服务业的平均工资为 122478 元,首次打败金融业成为新霸主,是全...

51660
来自专栏即时通讯技术

微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅

本文由微信开发团队工程是由“oneliang”原创发表于WeMobileDev公众号,内容稍有改动。

27300
来自专栏腾讯社交用户体验设计

Today Widget 抢占比桌面更重要的地盘 - 腾讯ISUX

14420
来自专栏程序员互动联盟

【答疑释惑第九讲】自学过程中如何才能抓住重点?

疑惑一 如何学好vim? 学习linux基本上第一关就是如何学习使用vim,vim其实就是个编辑器命令模式的编辑器,使得初学小白都觉得这工具很神秘,相对于越来越...

34350
来自专栏从零开始学 Web 前端

简述C和C++的学习历程

总是被问到,如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。  一家之言,欢迎拍砖哈。 1、可以考虑先学习C. 大多数时候,我们...

14220
来自专栏程序员的知识天地

优秀程序员的10条黄金法则!

这是一条非常值得遵循的伟大原则。我很习惯于回过头去检查自己写下的代码,重构那些被多次使用的部分。虽然在将一个长方法分解为若干个短方法时,会遇到一些困难。Ctrl...

11840
来自专栏老九学堂

【秘籍】程序员高薪面试技巧

面试就像高考,分数优异,不一定能进入好大学,面试亦是如此,能力强不一定能进入到自己心仪的公司,因为这个不仅和技术有关,还和自己的综合素质与临场发挥有关。今天老九...

35740
来自专栏CDA数据分析师

Python编程语言发展简史

Python是我喜欢的语言,简洁、优美、易用。前两天,我很激昂地向朋友宣传Python的好处。 “好吧,我承认Python不错,但它为什么叫Python呢?” ...

51060
来自专栏维恩的派VNPIE

针对Quant的Python快速入门指南

最近有越来越多的朋友在知乎或者QQ上问我如何学习入门Python,就目前需求来看,我需要写这么一篇指南。

43140

扫码关注云+社区

领取腾讯云代金券