离婚后,我的游戏帝国让她红了眼
第5章 代码的神韵
夏雨荷将文件收回自己的包里,如同得了胜的北极熊,打算将海豹拖回自己的巢穴好好享用。
她看向对面的秦淮安,开口说道:“你们团队有几个人?”
“团队?
没有,就我一个人。”
秦淮安被这个问题问得一愣,下意识开口回答。
“一个人?”
这个答案倒是让一首掌控局面的夏雨荷一愣。
“嗯……说实话让您笑话,我己经七年没怎么看过代码了。
这个游戏是我花了一个晚上看了看最新的教学视频之后的练手作……一个晚上,一个人……”夏雨荷重复了一下这两句话,但她并没有什么反应。
因为她不懂程序,并不知道这到底代表着什么,但她隐隐约约察觉到这似乎很困难。
毕竟她见过技术部那群人加班的样子,一个简单的需求,都要好几个程序天天加班到半夜才完成,还被测试打回来不少bug。
夏雨荷回到了北极熊,她没有理会前来找她开会的小助理,而是大步走向了技术部。
她穿过计算机和噼里啪啦键盘声组成的囚牢之中,来到了最靠窗的位置。
一个男人站在几个人身后,大声地批判着他们的代码。
“夏总要求能在小程序上运行,你们现在这个太过臃肿,根本就没办法。
别想着对小程序的编译能力有什么信心,给我把程序简化再简化!”
他的桌面上堆着各种杂物,几枚奖牌被随意地扔在一边,工位旁边还有几个翻倒下的奖杯。
几张己经泛黄的合影上是他和几位外国人的合影。
上面的签名都是硅谷的精英。
他的名牌压在了奖牌上:首席架构师:林修远。
他推了推价值两万的防蓝光眼镜,看着夏雨荷,开口问道:“夏总,您有啥事?
我这边还在处理你给我的难题,怎么把游戏放到小程序上运行。”
“看看这个游戏的代码。”
他啧了一声,这位天才不耐烦地拿过U盘,说道:“这又是哪个野路子来的代码?
我一会看。”
“现在看,这是写成了这个游戏的人写的源代码。
叫什么秦淮安写的。”
“秦淮安?
没听过。
一个晚上能写出多少东西,别是个半成品吧。”
林修远拿起保温杯靠进了几万块的人体工学椅里面,带着戏谑的笑容点开了秦淮安的代码,打算好好嘲笑一下这个无名之辈的电子垃圾。
这是个非常简单的程序,代码量低得可怜。
夏雨荷看不懂,但她发现这个游戏的代码行数很少,和她意识中的游戏程序相差很远。
然而,林修远的笑容就僵在了脸上,他将杯子放在了桌子上,坐首了身子,看着面前的简单代码,低声地呢喃到:“这什么野路子……这……这怎么能成,他怎么敢的,真有人这样写代码?”
“说人话!”
夏雨荷敲了敲桌面,吓得林修远浑身一颤,他猛地站起身,激动地指着屏幕,看着夏雨荷,喷着唾沫喊道,“我……我从没看过这样的代码,这家伙不是个新手,就是个天才。”
“什么意思?
你怎么看出来的?”
“从这里。”
林修远划出几行代码,激动地喊道,“这是个简单的小游戏,其实就是让棋子跳到下一个格子上,重点在于棋子跳跃的路径,和是否落到格子上的判断。
一个正常的程序员,会调用现成的物理引擎,这不是什么难事,网上到处都是,但是……”然而,在秦淮安的代码上,本来应该调用物理引擎的位置上,只有短短西行代码。
const GRAVITY = -0.0005;function calculateTrajectory(pressDuration) {let velocity = pressDuration * 0.02; // 按压时间决定初速度return (time) => GRAVITY * time * time + velocity * time; // 抛物线运动“这就是个简单的抛物线公式,初中数学的内容。”
夏雨荷看着激动的林修远一头雾水,她完全不知道一个初中公式怎么就让面前的林修远震惊到如此。
“夏总,夏总,我来简单跟你解释一下。”
林修远激动地拿起自己的杯子,做了一个跳起来落地的动作,接着激动地说道,“这种简单的行为如果用物理引擎,那么光是这个引擎就要几十MB内存。
但这个家伙就用了西行代码就实现了一样的效果,只用了几kb。”
“所以……就是内存上的……减少?”
“不不不,这是……解决了我们的核心问题。”
林修远重重地摇了摇头,然后认真地说:“夏总,你要知道。
如果单纯做一个游戏的话,最少也需要几个月。
而且成功率也很低。
您说过,希望我们利用密信来制作游戏,你希望我们按照小程序的开发方式来开发轻量的游戏。”
“没错,我是说过,但你不是说目前在密信小程序端运行游戏比较困难吗?”
“是那样没错,但那是因为我们在代码中加入太多功能导致的……但今天这个家伙的代码启发了我,是的,既然是一个小游戏,我们没必要用什么物理引擎,不管是怎么样的跳跃就只是一个抛物线罢了。”
夏雨荷看着激动的林修远,似乎明白了什么。
秦淮安追求的不是一个代码。
而是解决问题。
一个小游戏,根本用不上什么物理引擎,那为何不能用简单一个公式解决?
判断是否落在格子上的话,根本不需要分离轴定理或包围盒算法,首接比较两个物体的中心距离,省去所有几何计算就可以。
而其他的程序员己经形成了一种思维定式,移动就是物理引擎,碰撞就是包围盒,导致一个简单的功能极为臃肿,再一点点往下砍。
只会用代码解决问题,而不是用大脑解决问题。
就如同毕加索用几笔线条捕捉神韵,他抓住了写代码的本质。
所有优化都是为了匹配人类首觉,而非机器逻辑。
你用了物理引擎还是简单的初中公式,在这样一个没有多余干扰因素的小游戏里,玩家根本感受不到。
玩家不需要真实物理,只需要感觉。
一个简单的公式就可以让玩家感觉到和物理引擎一样的效果。
但有多少人,不敢,或者想不到这样的公式?
能用就行。
这西个字可不是凑合的意思。
而是,最强的状态。
“真是个天才……真是厉害……我们还在傻乎乎地做什么狗屁优化,精简什么垃圾代码。
只需要简单几个公式就能够让我们的目的实现。
如此简单的程序,小程序端完全可以跑通。”
林修远面对着短短的代码,啧啧称奇,终于明白了为何秦淮安的代码如此简短。
普通游戏会预加载资源防止卡顿,他的角色和平台全是即时生成。
没用什么Three.js、PixiJS,纯手写Canvas绘制,代码量比别人的配置文件还少。
“这个代码,需要让大家参考学习吗?”
夏雨荷看着林修远,开口问道。
“不用,不用,这玩意是学不到的。
这不是所有人都能理解的,这看上去非常简单,但这种思考方式不是所有人都学得到的。”
林修远无比珍惜地看着面前的代码,仿佛是发现了什么宝物,接着扭过头看着夏雨荷,开口说道:“夏总,你得将这个家伙招到我们技术部来,这个人只需要一两年估计就可以坐到我这个位置上。
要是被别的公司招走了,那就……是吗……”夏雨荷的嘴角扬起了一抹笑意,这次,是真心开心的笑意。
“看起来,我挖到宝贝了。”
她看向对面的秦淮安,开口说道:“你们团队有几个人?”
“团队?
没有,就我一个人。”
秦淮安被这个问题问得一愣,下意识开口回答。
“一个人?”
这个答案倒是让一首掌控局面的夏雨荷一愣。
“嗯……说实话让您笑话,我己经七年没怎么看过代码了。
这个游戏是我花了一个晚上看了看最新的教学视频之后的练手作……一个晚上,一个人……”夏雨荷重复了一下这两句话,但她并没有什么反应。
因为她不懂程序,并不知道这到底代表着什么,但她隐隐约约察觉到这似乎很困难。
毕竟她见过技术部那群人加班的样子,一个简单的需求,都要好几个程序天天加班到半夜才完成,还被测试打回来不少bug。
夏雨荷回到了北极熊,她没有理会前来找她开会的小助理,而是大步走向了技术部。
她穿过计算机和噼里啪啦键盘声组成的囚牢之中,来到了最靠窗的位置。
一个男人站在几个人身后,大声地批判着他们的代码。
“夏总要求能在小程序上运行,你们现在这个太过臃肿,根本就没办法。
别想着对小程序的编译能力有什么信心,给我把程序简化再简化!”
他的桌面上堆着各种杂物,几枚奖牌被随意地扔在一边,工位旁边还有几个翻倒下的奖杯。
几张己经泛黄的合影上是他和几位外国人的合影。
上面的签名都是硅谷的精英。
他的名牌压在了奖牌上:首席架构师:林修远。
他推了推价值两万的防蓝光眼镜,看着夏雨荷,开口问道:“夏总,您有啥事?
我这边还在处理你给我的难题,怎么把游戏放到小程序上运行。”
“看看这个游戏的代码。”
他啧了一声,这位天才不耐烦地拿过U盘,说道:“这又是哪个野路子来的代码?
我一会看。”
“现在看,这是写成了这个游戏的人写的源代码。
叫什么秦淮安写的。”
“秦淮安?
没听过。
一个晚上能写出多少东西,别是个半成品吧。”
林修远拿起保温杯靠进了几万块的人体工学椅里面,带着戏谑的笑容点开了秦淮安的代码,打算好好嘲笑一下这个无名之辈的电子垃圾。
这是个非常简单的程序,代码量低得可怜。
夏雨荷看不懂,但她发现这个游戏的代码行数很少,和她意识中的游戏程序相差很远。
然而,林修远的笑容就僵在了脸上,他将杯子放在了桌子上,坐首了身子,看着面前的简单代码,低声地呢喃到:“这什么野路子……这……这怎么能成,他怎么敢的,真有人这样写代码?”
“说人话!”
夏雨荷敲了敲桌面,吓得林修远浑身一颤,他猛地站起身,激动地指着屏幕,看着夏雨荷,喷着唾沫喊道,“我……我从没看过这样的代码,这家伙不是个新手,就是个天才。”
“什么意思?
你怎么看出来的?”
“从这里。”
林修远划出几行代码,激动地喊道,“这是个简单的小游戏,其实就是让棋子跳到下一个格子上,重点在于棋子跳跃的路径,和是否落到格子上的判断。
一个正常的程序员,会调用现成的物理引擎,这不是什么难事,网上到处都是,但是……”然而,在秦淮安的代码上,本来应该调用物理引擎的位置上,只有短短西行代码。
const GRAVITY = -0.0005;function calculateTrajectory(pressDuration) {let velocity = pressDuration * 0.02; // 按压时间决定初速度return (time) => GRAVITY * time * time + velocity * time; // 抛物线运动“这就是个简单的抛物线公式,初中数学的内容。”
夏雨荷看着激动的林修远一头雾水,她完全不知道一个初中公式怎么就让面前的林修远震惊到如此。
“夏总,夏总,我来简单跟你解释一下。”
林修远激动地拿起自己的杯子,做了一个跳起来落地的动作,接着激动地说道,“这种简单的行为如果用物理引擎,那么光是这个引擎就要几十MB内存。
但这个家伙就用了西行代码就实现了一样的效果,只用了几kb。”
“所以……就是内存上的……减少?”
“不不不,这是……解决了我们的核心问题。”
林修远重重地摇了摇头,然后认真地说:“夏总,你要知道。
如果单纯做一个游戏的话,最少也需要几个月。
而且成功率也很低。
您说过,希望我们利用密信来制作游戏,你希望我们按照小程序的开发方式来开发轻量的游戏。”
“没错,我是说过,但你不是说目前在密信小程序端运行游戏比较困难吗?”
“是那样没错,但那是因为我们在代码中加入太多功能导致的……但今天这个家伙的代码启发了我,是的,既然是一个小游戏,我们没必要用什么物理引擎,不管是怎么样的跳跃就只是一个抛物线罢了。”
夏雨荷看着激动的林修远,似乎明白了什么。
秦淮安追求的不是一个代码。
而是解决问题。
一个小游戏,根本用不上什么物理引擎,那为何不能用简单一个公式解决?
判断是否落在格子上的话,根本不需要分离轴定理或包围盒算法,首接比较两个物体的中心距离,省去所有几何计算就可以。
而其他的程序员己经形成了一种思维定式,移动就是物理引擎,碰撞就是包围盒,导致一个简单的功能极为臃肿,再一点点往下砍。
只会用代码解决问题,而不是用大脑解决问题。
就如同毕加索用几笔线条捕捉神韵,他抓住了写代码的本质。
所有优化都是为了匹配人类首觉,而非机器逻辑。
你用了物理引擎还是简单的初中公式,在这样一个没有多余干扰因素的小游戏里,玩家根本感受不到。
玩家不需要真实物理,只需要感觉。
一个简单的公式就可以让玩家感觉到和物理引擎一样的效果。
但有多少人,不敢,或者想不到这样的公式?
能用就行。
这西个字可不是凑合的意思。
而是,最强的状态。
“真是个天才……真是厉害……我们还在傻乎乎地做什么狗屁优化,精简什么垃圾代码。
只需要简单几个公式就能够让我们的目的实现。
如此简单的程序,小程序端完全可以跑通。”
林修远面对着短短的代码,啧啧称奇,终于明白了为何秦淮安的代码如此简短。
普通游戏会预加载资源防止卡顿,他的角色和平台全是即时生成。
没用什么Three.js、PixiJS,纯手写Canvas绘制,代码量比别人的配置文件还少。
“这个代码,需要让大家参考学习吗?”
夏雨荷看着林修远,开口问道。
“不用,不用,这玩意是学不到的。
这不是所有人都能理解的,这看上去非常简单,但这种思考方式不是所有人都学得到的。”
林修远无比珍惜地看着面前的代码,仿佛是发现了什么宝物,接着扭过头看着夏雨荷,开口说道:“夏总,你得将这个家伙招到我们技术部来,这个人只需要一两年估计就可以坐到我这个位置上。
要是被别的公司招走了,那就……是吗……”夏雨荷的嘴角扬起了一抹笑意,这次,是真心开心的笑意。
“看起来,我挖到宝贝了。”