聊聊学习与成长
《DX11/C++ 重写 DNF 客户端》这个个人项目,自 2023/09/02 首次提交代码,到今天已经过去 3 年有余,起初计划花半年左右研究探索,不知不觉已经坚持了这么长时间。虽然复刻游戏无法给自己带来切实的收益,甚至需要承担法律责任,但我还是做了。这是我目前写过的最大的个人项目,整个过程受益匪浅,很多以前觉得模糊的知识也慢慢变得清晰。最重要的是,我乐在其中,并且意犹未尽。
对于没有正式参与过游戏开发的程序员(虽然在游戏公司待过),开始确实很难。对于复刻游戏,不知道素材如何获取,不知道脚本怎样使用,初期可以说是疯狂地在各种群和论坛查找资料。当我废了老大劲成功地提取素材,解析脚本,加载角色在屏幕移动的时候,我觉得这整个东西就是个庞然大物,整套东西要摸清的话,遇到的困难、消耗的精力绝对是巨大无比。所以原本的计划是完成一个场景,一个职业的大部分技能。但等真的完成后,我被里面的一些东西吸引住了:简单的一套动作搭配各种特效表现出来的完全不同的视觉效果、脚本的一些设计以及图像处理的巧妙运用经常让我拍手叫好、如何设计更好的框架以支持脚本、底层渲染管线到上层 UI 之间的种种,这些东西都在激发我不断做下去的好奇心。后面就一路完善副本,以及创造新的副本和玩法。
代码越写越多,自己对项目的了解也逐渐从陌生到熟悉,到现在基本能按照自己的想法做出各种功能和效果,完全还原整个客户端也并非不可能。不过初始的目的就是学习为主,现在想了解的东西已经掌握了个大概,再加上这个项目消耗的巨大精力已经严重影响自己的其他重要工作了,所以准备先告一段落,专心处理自己下一阶段的任务。当然这个复刻项目应该不会完全停止更新,空的时候可能会更,只是不会像前面那样沉浸其中了。
这个过程似乎让我更能体会到它跟生活中其他东西的一些共性:你感觉一个事情很难,它往往只是难在“初期”,但是这个“初期”可能比你想的要长很多(你以为只需要坚持几周或者几个月就能有所收获,但实际上可能需要坚持一年甚至几年才能见效)。我说这个是因为我联想到自己学钢琴和游泳这个两个事情,它们跟我做这个项目的过程太像了。
关于游泳,蛙泳就不说了,这个属于容易见效的那档,在学自由泳的时候,练习换气那会我差点以为自己学不会(还是有教练带着的情况,也不能说学不会,就是感觉学不好),在后面的练习中,不知道哪一天开始,我好像能换好了,不过我又发现了新的问题:为什么别人自由泳能连续游好几个来回,我一个来回就气喘吁吁,真的是我精力不济吗?我觉得不是,应该还是自身动作有问题。就这样过了好长时间,直到最近几个月,我慢慢地感觉游起来不怎么消耗体能了,也掌握了一些动作技巧,水感也是越来好,能够很好地感受到水的流动跟身体配合前进的那种感觉。这个过程是有点潜移默化的,就是,感觉是在不断练习的过程中无知觉就掌握了。巧的是,从学游泳开始到现在也是 3 年左右。
钢琴也是,基本上跟游泳是同时学的(不算上曾经自学过一段时间的话)。我当时就好奇,到底是怎样做到眼睛同时看上下两行谱,左右手分别弹不同的区域,脚还要时不时踩下踏板的。真正上手去做时,确实如预想一样手忙脚乱,但转瞬一想,这东西小孩子都能学好,以成人的智力水平不可能学不好(只是小朋友相对来说有一些优势,但相对的,成人有另外的优势)。于是,跟游泳一样,也是不断地练,慢慢地,眼睛能慢慢打开往谱子后面看,有那么一点点跟读书一样的感觉(并不是先看当前的一个字然后读它,然后再看下一个字再读它[当然刚开始学要这样],而是一次看完一小段文字然后连续流畅地连读,打字也类似),手摸键盘开始有手感,而踩踏板已经是习以为常甚至不需要经过大脑思考。
现在游泳和练琴时间相比于刚开始学的一年要少了很多,但仍未放弃,现在虽然说还谈不上很熟悉,但起码是学起来不会再像初始那样吃力。每个人都知道对一件新的事情,肯定是有一个陌生到熟悉的过程,但引起我注意的是时间,从开始学习一个新技能(或知识)到能让自己感到真正有所受益,需要的可能是好几年。因为这些都是自己近些年一直在做的事情,所以感受很深。还是不该轻言放弃,“多练,再坚持一下”这句话还是有大道理的。