软件公司如何保障源代码不会被外泄?

谢谢邀请。防止源代码外泄这是一个常见的需求,不同的公司有不同的做法,包括技术和流程规范等,相关的解决方案有很多。这里介绍一种技术:VDI(虚拟桌面),感兴趣者可以评估一下。VDI(Virtual Desktop Infrastructure)这里不多做解释,直译就是虚拟桌面基础设施,也是虚拟化技术的一种典型应用,其技术实质是程序运行在后台的服务器端,客户端(使用者的电脑)呈现的只是一个画面,思杰、VMware、深信服等都有这种技术,感兴趣可以自行百度。
这种技术一大好处是:源代码集中保存在服务器端,代码根本不在研发人员的电脑中落地,这样可以防止代码被本地病毒等侵袭,还可以防止屏幕拷贝等非法操作;VDI的另一个好处是,采用这种技术后代码的拷贝、修改等行为都是可审计的,如果有恶意拷贝行为也可以及时发现。这种技术其实已经存在多年,现在算是比较成熟了,对用户而言面临的挑战主要是成本(一套新架构,服务器、存储、网络成本都可能增加),以及用户体验。
为何有人说以前的游戏机从没有掉帧的情况,而现在的游戏机部分游戏都会掉帧?

“游戏机掉帧”说明问题出在游戏机上,游戏本身是没问题的,对吧。确认了以上共识,我们再来讨论“当下游戏机在运行某些游戏时会掉帧”的情况。软硬件开发角度来说,所谓“以前的游戏机”我们就用8位红白机来举例。现在从画面来说红白机有一个最大的问题就是闪屏,这只是画面表现的问题和帧率无关。因为8位家用游戏机机能的影响,当同一纬度出现超过4个角色,就会出现“显示冲突”所以会喜闻乐见的经常看到屏闪。
因为8位数的FC同轴只能移动8个像素,但是构成一个人物最少也要两个像素那么宽,所以同一水平很少超过4个角色,一旦超过就会随机某个像素块发生闪烁。再看看当时的游戏研发。第三方厂商都是按照游戏机硬件天花板去设计开发游戏的,只要能在6502 6800等芯片上流畅运行的才能算是完整的游戏,也就是说硬件制约了游戏的开发,而且当时的游戏体量小,8位机大多是一些横版闯关类游戏,而各个游戏厂商都是熟练工,所以游戏产出量是非常大的,几个月就能做一批游戏出来,如果不是任天堂对上游开发的控制,8位机的游戏还能更多。
当时的游戏竞争是以游戏机为核心的,8位机是8位机的竞争,16位是16位的竞争,横版跳跃打完,到了16位才有了一些故事更复杂、游戏时间更长的RPG游戏,包括美术设计、优化等等都在某个“世代”的约束下进行,因为硬件发展相对较慢,慢于游戏开发。现在的游戏呢?《荒野大镖客2》8亿美金8年打造,2018年各种奖拿到手软,那么在游戏开发的时候,要用什么硬件标准去做研发呢?答案是没有。
虽然说硬件行业的发展在几年内是可预期的,但是游戏开发是一个商业行为,游戏要卖很多年,或许要适配两代主机,以及更为普及的PC端。所以在游戏研发肯定是不考虑硬件,只对游戏内容和画面极致追求。花了8亿美金的游戏总不能卖两年就因为当时研发时担心机器带不动而束手束脚,最终没赚钱甚至没收回成本就卖不动吧如果玩家的设备相对来说无法完美运行(翻修、老化、故障等等)那不能归咎于游戏。
而且与以前游戏不同的是,以前游戏画面清晰度低,画面简单,而现在的游戏画面支持4K,游戏引擎也可以让细节之处纤毫毕现,虽然超过24帧就已经是流畅的动画了,但是画面真实而且元素众多的情况下,有哪怕一瞬间的丢帧,都会影响到游戏的沉浸感受。我们只是拿PS4上面的一款游戏举例子,还有些游戏是全平台发布的,各个平台设备上的体验也是不一样的,就算是同一款游戏机,新旧、老化程度也可以对游戏运行产生影响,甚至当你问起客服,他们还会归咎于当地气候、室内温度等等....简单来说,以前的游戏机是游戏软件追赶硬件,力求在有限的变现力中呈现最好的游戏效果。
而现在则是游戏机去追求游戏本身最完美的呈现效果。硬件“追逐”软件这种说法可能很多人不认同,因为还有个词叫“优化”,如果设备可以完美运行当年发售的所有游戏,唯独一款掉帧,那就是这款游戏的优化差。这种没有控制变量的对比有点耍流氓的意思,但是比耍流氓更无赖的是,游戏机只明白0或1这样冰冷的代码,它偶尔就是会掉帧,也说不清是谁的问题。
2023-12-19 / 6.0.1

2023-12-19 / 6.0.1

2023-08-25 / v3.1

2023-08-25 / v1.0.3

2023-08-25 / v1.0.1

2023-08-25 / v2.19.1

2023-08-25 / v1.2.0

2023-08-25 / v2.0.1

2023-08-25 / v1.5.1

2023-08-25 / v4.4.0

2023-08-25 / v1.0.03

2023-08-25 / v5.6.6
