欢迎光临散文网 会员登陆 & 注册

弹琴与MCModding教学

2021-12-12 13:01 作者:道家深湖  | 我要投稿

条条大路通罗马,有的人生在罗马,有的人离罗马近,有的人在另一块大陆上。

就目前的世界来看,“公平”,并不是说每个人都享有同等的待遇,也不是每个人同等的付出会有同等的收获,而是,“每个人都可以努力”,仅此而已了。

【由基本要素构成的序列,逐渐精深】

会演奏乐器,不是指会演奏音阶从do到ti,而是指可以演奏曲目。

我的小学音乐课教口琴,然而我学的成果不怎么样。我知道该怎么吹每个音,但是我的手和嘴没有那么协调。小时候和长大后我家都买过葫芦丝(一种半葫芦半笛子的乐器,那个年代的庙会经常有卖的),我看了说明书也知道如何吹奏do-re-mi-fa...但也吹不出曲子。小时候我爸还买了个吉他,我也大概知道了吉他奏每个音是怎么按的,按我依旧弹不出什么曲子。

类似地,每个人的电脑都有键盘,对着键盘上的标记敲26个字母大家都会,但这不等于每个人都会打字或者写代码。我妈不会输入@#¥%这样的符号,我跟她说按住shift,她也就会了。虽然有时会忘,多说几遍也就记住了。刚上大学那会儿,我试着教过我妈写一个简单的c语言程序,我妈确实可以在我的指导下完成,但就像她本人所说,没有我的指导肯定写不了。

只是知道基本操作并不够,需要的是能推导或者记忆过程,并在合理的时间内完成这些操作。如果音符与音符之间隔得太长,那就听不出曲子了。如果写个把字符串打印到屏幕就需要几个月,那也就别指望能写出多么大的程序了。

在演奏乐曲的时候,基础是能记住曲谱,或者以足够快的速度阅读乐谱。写代码的时候,对速度没有那么敏感,但是根据语法规则,把字母、数字、符号组装成可以实现某些逻辑的能力不可或缺。

实际上,以我的水平来看,我是在组合变量名、if、for括号等东西,字母这种事我是直接忽略的,会写代码的各位读者想必也是如此。更高级一点的程序员,或许是在拼接算法块,但我算法做的不深,没有体会。我的类似体会是做mod的时候,“我想召唤一个具有XXX特性的实体”,这一句话所代表的三行代码就像一个单词那样自然而然地写出来了;“我想写一个空白物品作为合成材料”,我就会毫不犹豫地public static final……不不不,我会毫不犹豫地复制前面写好的东西然后改一下,那样更快。

不论是弹琴还是做mod,都有一个逐渐精深的过程,不过精深的方式不太一样。

如果你看郎朗的大师课,他会去重点强调力量和节奏的控制,哪个音是装饰音,但他并没有让你把不同的整首曲子拼在一起越拼越大。他最多就会从音符拼小节,再拼成乐句、篇章、曲目,最多再把不同的几个曲目组合再一起了,再拼时间就太长了。毕竟他不是知名作曲家,而是演奏家,侧重的方向有所不同。

代码有很多个精进的方向。固然它也有控制格式和写法,使得代码可读性高、稳定性强的那一面,但它层层封装的一面也不容忽视。就像把细胞拼成组织,组织拼成器官,器官拼成个体,个体拼成种群那样,把一大套代码封装成一个接口去供其他代码调用,以至于需要执行某个任务的时候,只要下令某个模块去工作,那个模块内部的诸多零件就会协调运作,实现一个复杂的功能。背诵圆周率5位,对于大多数人来说没有多难,但对一个细胞来说就……代码的运行效率够高后,这个拼装的过程几乎是无限持续的,多么复杂的拼装代码,封装后都可以当做几个接口去调用,然后再去拼成更复杂的东西。当然代码也不光是由小拼大,一层摞一层,越摞越厚但是上层越来越小的也不是没有——我们大多数人写的程序可比操作系统简单多了。

在我们的生活中,这种拼装的例子比比皆是。音符一层层拼成旋律,笔触一点点构成画作,文字一点点构成文章,工人一位位构成工序,零件一个个拼成机器,砖块一个个盖出房子,代码一行行拼成程序,题目一道道构成试卷……这些拼装的过程,尤其是创作和高速执行这种拼装序列的过程,基本都涉及逐渐精深。

【乘兴而来,从入门到放弃】

看到Synthesia这个软件后,我又买了一个电子琴。出乎意料的是,这个电子琴附带一个手机APP,也具有和Synthesia类似的功能,那就是把谱子可视化,教我弹琴。只不过,Synthesia可以可视化任何midi格式的乐曲,但这个APP只有少数几个它提供的。但这个APP更进一步,还标了用哪个手指。

泡泡钢琴APP截图

我简单地学了一下如何操作音色,试了试手感之后,就开始尝试APP里的……《红莲华》,也就是动画《鬼灭之刃》的主题曲。显然这不是一首适合新手弹的曲子,花了几个小时我也勉强能跟下来谱子了,这还只是单手。单手的失误率和跟拍率,甚至没有达到解锁双手的标准。

然后我又做了什么呢?我和表妹讨论了下要不要录个节目,我弹《好运来》她抽卡。然而,我发现我根本没有耐心学下来包含前奏的《好运来》。就算是我谱子记住了个大概的《让我们荡起双桨》,我也完全没耐心按照他的指法弹——同时操心用的手指和要弹的音对我来说过于困难了。

再接下来,我从网上搜到了《原神》《弹丸论破》的midi配乐,把琴插到电脑上,选择其中主要的声部开始弹。这是正确的学习路径吗,显然不是。然而,如果要我遵守正确的路径一板一眼地练习指法和练习曲,我可能两天就弃坑了,兴趣全无。毕竟,我甚至连五线谱都不会认,充其量认个简谱,基础差到几乎没有。我学琴的兴趣就是想弹出那些印象极深的曲子而已,对成为一流演奏家没太大兴趣,对于使用正确的手指则更无兴趣。如果我本身就会钢琴,或者之前有更好的手眼协调性练习,恐怕不会这么拒绝指法追求。

双手弹奏?单手和弦?再见再见,我不弹那么复杂的。

看到我的视频教程,来学mod的人也是各式各样。“想做mod”这种愿望,无论是否会编程,都会发生。然而,不会编程的人来学,就会非常痛苦。

抛开搭建环境的玄学不提,做出第一个物品先要注册这个、注册那个,写个物品基类出来,写两三个json并放到对应目录,弄不好还要手绘贴图,这就够麻烦了。其中还有无数等着翻错的陷阱,json更是极其容易写错。即使这步没有劝退,到后面做实际需求就更难了。

群里有个人想要做个物品,效果是点击右键就会发射烟花火箭,他根本不知道烟花火箭的细节多麻烦,光是从玩家的角度理清烟花火箭有哪些参数、怎么配置才好看就够烦了,还要给生成的火箭设计、设置这些参数,不会java就算了吧。

正确的路途,当然是学习java,知道如何利用面向对象架构,知道基本语法,自己能使用if和for组合出各种东西来。我大学刚入学的那会,有一个作业题是用c语言输出如下的内容:

*

**

***

**

*

大概如此,每行星号递增然后递减。虽然都知道了for、while、if、printf的语法,但是有的人并不能想出如何拼出这么个东西。这需要的更像是一种解题能力,或者说是小学奥数的那种分析能力。

我先把问题的解决分为三步:理解实际需求,分析出抽象架构,并把架构用代码写出来。这三步里面,分析抽象架构的方式很难教——简直就是在教人如何思考嘛。我不想教这种东西。但是,如果一个人连这个都分析不出来,那指望他去自己设计架构实现需求,难度可想而知。

所以我的初级教程很简单,都是“你抄代码就行”。我甚至把注册和基类都给写好了,直接一行public static final就能写出个新物品。我也完全示范了简单的事件操作伤害,并留给了观众数值上2改3的空间,说了如何上buff、治疗,并表示可以组合。

然后,有人抄都抄不对。

EntityLivingBase hurtOne = event.getEntityLiving();

抄成

EntityLivingBase.hurtOne = event.getEntityLiving()

乱加点,不写分号,然后截图到群里问……老天,自己先学java吧。群友的时间不是用来弥补你不会编程或者看视频时的疏忽的。如果你能抄对,那么自不用说,一切都好;如果抄都抄不对,难道还要来麻烦别人吗?连我,都懒得管这种事。我会纠正一次并予以严重警告,勒令下次自行处理,这就够给面子了。能让我亲自下场纠正一次这种低级错误,就感恩戴德吧,这种一般都是直接一个“滚”或者“go learn java”完事的,连纠正都不纠正。

抄对了后,有人把我事件里的代码复制到别处,然后发现根本不能用——毕竟,“hurtOne.heal(2f)”,只有在你声明了变量hurtOne为EntityLivingBase的时候才有意义。很多人连hurtOne的声明都不复制过来,那怎么指望代码好使呢?编译都不能过。凡是我没有完全示范的地方,寸步难行,这就是不会编程的后果。要想学习,非得自己学习编程不可。

学习编程要多久?那可不是看个五分钟或者半小时的教程就能会的,这东西不是抄,而是理解的。不同人悟性不同,速度会有差别。另外,每天学八个小时和看五分钟也不一样,这就导致有的人只需两天,有的人可能要学个一年。我们在大学的时候,先学了c,小学期只有两周,就速成c++基础。我工作后,留给我学lua的时间只有两天,而那也完全够了——这都是建立在前面先用c学会了编程的基础上。有人问我要多久,我无法给出明确的答案——毕竟编程不是靠时间耗出来的。考了驾照,放着几年不开车也可以解锁上高速的权限,但学习编程,全靠自己。

西天有多远,几日可达?勿问多远,走就是了。心中之路,唯有自己可知。

若你恰好是计算机系或者软件工程系毕业,那看我的视频甚至觉得太简单了,可以去看harbinger那种文字教程。这种情况下,我去指导一个很有基础的人,一点就透,大家都开心。这种例子我也遇到过,也是我运营我湖中Mod社群的动力。

中国十多亿人,有多少人是计算机相关专业?有多少人会英语?别说计算机专业,上过大学的人又有多少?多少人被分配进职高了事?我非常清楚,虽然就我所生活的地方而言,我是个没考进清华、没进大厂高薪的失败者,但这已是芸芸众生难以登攀的高度。北邮确实比清华差一个档,但考不进北邮的可以说是大有人在。

我视频的真正受众,可以说是少之又少。基本盘不大,我在b站的播放量和关注数也不会高到哪里去。这不光是视频质量的问题,这是市场现状的问题。就算砸钱推广,也涨不了多少粉,除非我把我的视频更大众化。但我的教程这种东西,越是浅显,限制就越大。教会空白道具固然简单,但是能做的事也很少。我希望我做的事,是有意义的,有目前无人企及之处的,而不是完全被其他几位的教程覆盖。

我,希望在我死后能给这世界留下些什么。要像流星划过夜空,之后也要给世界留下陨石,作为曾经存在过的证明。各色视频也好,《理想境》也好,这才是我的追求。教程,不过是这个追求的副产物罢了。

如果这个教程没能照顾到一些观众,那我也只能说声抱歉了,芸芸众生太参差,我无法照顾所有人,也许被遗落的人正是你。

如果是那样的话……找别人吗?不,也许根本没有人会度你。指望别人来度本来就是一件很依赖环境的事,环境是什么样的都有可能。

但就像我开头说的,至少你可以选择努力。也许有人一辈子都到不了罗马,但他可以努力前往罗马,也只能努力。人用弓箭射不到月亮,但人可以一直朝着这个目标练习。

这便是这几年来我感受到的,残酷的现实。现实的存在形式不在乎人是否喜欢,因为现实就是现实。


弹琴与MCModding教学的评论 (共 条)

分享到微博请遵守国家法律