写于2016年,2020年重新发布。
最近尝试了一下做MOBA(利用Unity3D),还有游戏引擎。我发现它们都是很复杂的系统,可能都要10万行代码或更多。
一个人的局限性
这两年,我做过许多尝试,但是常常因为软件太复杂而放弃(或者休息一段时间)。我发现了一个人的局限性。有很强的程序员,也有很垃圾的,听说他们的效率有一百倍之差。但是无论你有多强, 你一年能写出来的代码行数,也难以超过2万行。当然,一个菜鸟一年也能写出2万行。所以,你再厉害,你写代码的速度也还是和别人一样,搞出10万行的代码,没有5-10年时间,是不可能的。
2020年注:从这几年的编程经验来看,搞出10万行代码,一个人2年就够了。
这是人本身的局限,就是你处理细节的速度只有这么快。这里的一个细节指的是一行代码。同样的时间内你只能处理好这么多细节,这与你的能力无关。
那怎么办
当然你不会放弃你做这些东西的梦想。你又没钱请人,也不能说服别人你的软件有前途。最后,你想到了一个办法。以游戏引擎为例。(一定要切记,人处理细节的速度是很有限的。)
只做几个子系统
接下来,运行时引擎,包含了许多子系统。包括渲染引擎(直接操作DirectX的代码),场景图,物理引擎(碰撞检测和刚体物理),动画系统,脚本系统(是的,要运行一个脚本语言,比如Lua),粒子特效,日志系统,GUI。所以,一定要告诫自己,我不会去做物理引擎,我不会加入脚本语言,我不会做粒子特效,我不会做GUI系统(一个GUI系统,可能就要花掉你整整一年时间)。
所以,你仅仅做渲染,场景,动画。你砍掉了80%。
那么,在做渲染引擎的时候,你仍然要看,比如,你可以没有阴影,没有透明物体,等等。总之,你不用和人家Ogre等引擎一样功能齐全,也不用那么高效(可以省掉很多让人头疼的效率优化代码)。所以,你又砍掉了2/3。
如果一个比较完整的游戏引擎要30万行(10万行运行时,20万行工具),那么,你的目标仅仅是,大约是其中的2%(你可以乘一下),也就是6000行。
没错,你只需要几个月时间就能做出来。
不要做无关的事情
你在想,嗯,好了,我只做渲染引擎,但是我需要读入3D模型文件,比如Collada(dae)。于是,你就花了几个星期搞出了读入Collada模型的代码。
你很有可能把一个又一个月的时间,花在比较无关的事情上。你想做的只是渲染本身。但是却不得不去做一些读入文件的功能。
所以一定要注意集中自己的精力,只去做最重要的部分。千万不要在不相关的东西上花太多时间。像模型文件,不要导入Collada这种复杂的东西。自己搞一个简单的格式,只包含顶点数据的文件。然后,就可以省掉许多时间。
Laser Focus
这里的关键词,就是小,只做一小部分的系统,只做一小部分的功能。只有这样才能做出成果来。
所以,要时时告诫自己,不要做无关的事情。
总之,把每一行代码都用在重要的功能上,把每分钟时间,都花在相关的地方。
当然,在你完成你那些关键部分的功能之后,还是需要别人加入,才能真正完成你的软件。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!