@
jindian 哪家公司? 开发啥游戏的? 单机还是联网? 手机还是 PC? 怎么说呢, 渲染和物理并不是最大的难点, 如果你愿意, 你完全可以将渲染和物理交给第三方库去做, 效果也会很漂亮. 如果你认为一款游戏的重点在于渲染和物理, 那么, 你应该重新审视一下, 什么是"游戏编程". 难道你觉得好游戏仅仅只是"画面好"吗? 游戏的根本难题在于系统设计以及逻辑设计. 加载资源是否是由单独的线程在做? 如果是的话, 线程有没有 coroutine 化? 有没有将重要数据做进程独立? 自己设计信号通道了吗, 是原子交换(自旋锁)还是互斥量? 你口中所说的"自实现的 STL 库"以及"成熟的服务器架构", 对于很多公司而言, 完全就是一团糟! 只要你写的代码里还有"using namespace std", 那它就不是 STL 安全的. 另外, 很多公司的网络通信模块令人堪忧......
@
outfocontrol 我不清楚你们的渲染和物理碰撞是怎么做的, 我看到的方案里, 重新封装第三方库或者 SDK 是比较常见的. 第三方库和 sdk 已经做了很多事情, 但也还有很多事情是要做的, 这些或许是你所认为的"难点". 也有一些人是完全自己设计的物理碰撞和渲染的数学模型(Minecraft?! 我不知道), 例如, 在渲染火焰时, 粘性粒子模型和非粘性粒子模型, 在计算量和表现形式上都有很大的差别, 另一个例子是, 飘动的旗面, 考虑材料的韧性而使用面块模型, 又或者是简单地使用粘性粒子模型, 区别也相当大. 或许你会说, "sdk 已经提供了这样的能力", 有或者是, "这并不在我的考虑范围之内", 那我也可以这样说道: 你并没有真正体会到渲染和碰撞建模的艰难过程, 亦没有理解到, 多数的 SDK/第三方库 /游戏引擎的表现始终不会如你所愿, 因为它们不是根据你的需求而定制的. 仅仅是组合现有的方案, 而不是发明新的方案, 这一点也不难, 只是很麻烦而已. 这是令人失望的, 因此, 我不喜欢游戏行业, 他们总是在用十分古老的技术, 并且依靠重复的人力劳动和计算机硬件性能的提升, 来"创造"出一些一点也没有用的技术.
我不想再讨论关于物理碰撞和渲染之类的话题, 也不想再讨论编写游戏有多少技术含量. 一款游戏始终应该将其设计, 玩法, 娱乐性作为卖点. 至于技术, 游戏行业永远不会诞生出优秀的技术, 游戏行业从来没有开源过一套能在非游戏程序以外使用的代码, 或者说, 甚至从来没有开源出一套通用的程序代码. 大家都知道现代游戏设计离不开 GC, 也离不开信号通道以及多线程优化. 但我们知道, 最优秀的 GC 实际上来自于服务器领域, 最优秀的信号通道来自于操作系统领域, 而多线程优化则来自于网络领域. 甚至, 在游戏中广泛使用的 coroutine 亦是来自于脚本语言.
如果哪一天, 有一套来自于游戏行业的开源代码广受欢迎, 我定会承认: 游戏行业促使了计算机科学的进步和发展; 不然, 我则要说, 游戏行业并不是高智力密集型的, 相反, 它是劳动力密集型的.