Category Archives: For Work

关于屎山代码

业务逻辑代码有时候会成为接手的人觉得特别差的屎山代码。
多为以下原因:

  • 第一手实现者,或因为能力或思考不足,设计实现问题
  • 经多人经手,需求反复改,或赶deadline,先让功能工作起来,后期也没时间再优化

可能我们因为一些需求会需要修改屎山代码,个人经验,做优化的时候,步子不要迈太大,特别是遇到屎山代码的时候。不要一次优化原本内容,还同时也把看起来顺手就可以改的业务逻辑也优化了。特别是一些tricky代码,改了容易出一些特定条件的bug。还是分开一步步做比较好。

我不是说应该有屎山代码或为其辩护,只是说我们应该正确看待。
程序员应该还是要提高对自己的代码要求。但世间的事却又事多元化,就如当前语境下“圣母”带有贬义一样。

听说全球大公司微软内部也有一堆很多Could work但是程序员不想碰的屎山代码。

3.18 Three TOPICS


Multiplayer networking with physics


https://ikrima.dev/ue4guide/networking/network-replication/physics-replication/
https://gamedev.stackexchange.com/questions/35459/multiplayer-networking-with-physics

Rendering thread

https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/Rendering/ThreadedRendering/

Explain P2P networking framework

This is a good example for explain P2P networking framework. Overall, No authority server in networking is P2P networking framework.

https://gamedevelopment.tutsplus.com/tutorials/building-a-peer-to-peer-multiplayer-networked-game–gamedev-10074

virtuos TGDC 2020 switch移植优化分享

维塔士上海技术总监Andy:Switch游戏优化经验分享

内存优化

去重复资源:贴图,shader,材质

贴图压缩格式:astc

限制最高mipmap

分辨率检查GBuffer内存布局,把不必要的效果的渲染缓冲去除掉

更激进的动画压缩算法

strip不必要的LOD

CPU

多线程渲染,对各个线程产生独立的命令缓冲

拆分render pass队列

拆分为多线程渲染,准备命令缓冲从20ms降低到6ms

GPU

Tegra GPU可以把渲染缓冲划分成很多图块,一个图块一个图块的播放渲染请求。可以提高命中cache。适用于大面积粒子效果。收集渲染命令和播放由一定开销。当使用大量的顶点属性或频繁修改属性时不建议使用。

模型、材质、粒子增加LOD使用

降低Shadow使用量

工具