{
  "schemaVersion": "0.11.0",
  "canonical": "https://www.pystone.net/notes/game-programmer-core-competency/",
  "atlas": "https://www.pystone.net/?node=game-programmer-core-competency#knowledge-atlas",
  "markdown": "https://www.pystone.net/notes/game-programmer-core-competency.md",
  "context": "https://www.pystone.net/notes/game-programmer-core-competency.context.json",
  "knowledgeVersion": "224c990773de.5fa8af6e39fa",
  "build": {
    "siteCommit": "224c990773de166d23a886306577dd90379529ce",
    "notesCommit": "5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a",
    "builtAt": "1970-01-01T00:00:00.000Z",
    "version": "224c990773de.5fa8af6e39fa"
  },
  "id": "note:game-programmer-core-competency",
  "slug": "game-programmer-core-competency",
  "title": "“游戏程序员核心竞争力”问题总结",
  "type": "note",
  "visibility": "public",
  "idStability": "rename-stable",
  "author": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "publisher": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "aliases": [],
  "summary": "“游戏程序员核心竞争力”问题总结",
  "contentRole": "unspecified",
  "isMoc": false,
  "mocRecognition": "none",
  "generated": false,
  "attribution": "unspecified",
  "domain": "10-计算机、信息技术与工程",
  "tags": [],
  "mocs": [],
  "contentHash": "bb834421299f1251f97eafb647c7a7f22feba0c30157b490861da820429ff117",
  "assets": [
    {
      "reference": "assets/0012 - “游戏程序员核心竞争力”问题总结__resource-001-509268ff5ab7.png",
      "url": "/media/d13c93a394d43c290b65.png",
      "mediaType": "image/png",
      "contentHash": "d13c93a394d43c290b651684ef27b2be61611541e4e934436b154112719ef883",
      "byteLength": 257410,
      "width": 1121,
      "height": 556
    }
  ],
  "headings": [
    {
      "depth": 1,
      "text": "“游戏程序员核心竞争力”问题总结",
      "anchor": "游戏程序员核心竞争力问题总结",
      "citation": "https://www.pystone.net/notes/game-programmer-core-competency/#%E6%B8%B8%E6%88%8F%E7%A8%8B%E5%BA%8F%E5%91%98%E6%A0%B8%E5%BF%83%E7%AB%9E%E4%BA%89%E5%8A%9B%E9%97%AE%E9%A2%98%E6%80%BB%E7%BB%93"
    },
    {
      "depth": 2,
      "text": "道理",
      "anchor": "道理",
      "citation": "https://www.pystone.net/notes/game-programmer-core-competency/#%E9%81%93%E7%90%86"
    },
    {
      "depth": 2,
      "text": "研究领域",
      "anchor": "研究领域",
      "citation": "https://www.pystone.net/notes/game-programmer-core-competency/#%E7%A0%94%E7%A9%B6%E9%A2%86%E5%9F%9F"
    },
    {
      "depth": 2,
      "text": "内容搜集",
      "anchor": "内容搜集",
      "citation": "https://www.pystone.net/notes/game-programmer-core-competency/#%E5%86%85%E5%AE%B9%E6%90%9C%E9%9B%86"
    },
    {
      "depth": 2,
      "text": "MaxwellGeng",
      "anchor": "maxwellgeng",
      "citation": "https://www.pystone.net/notes/game-programmer-core-competency/#maxwellgeng"
    },
    {
      "depth": 2,
      "text": "Jerish",
      "anchor": "jerish",
      "citation": "https://www.pystone.net/notes/game-programmer-core-competency/#jerish"
    },
    {
      "depth": 2,
      "text": "flashyiyi",
      "anchor": "flashyiyi",
      "citation": "https://www.pystone.net/notes/game-programmer-core-competency/#flashyiyi"
    },
    {
      "depth": 2,
      "text": "顾煜",
      "anchor": "顾煜",
      "citation": "https://www.pystone.net/notes/game-programmer-core-competency/#%E9%A1%BE%E7%85%9C"
    },
    {
      "depth": 2,
      "text": "gougou槐宏文",
      "anchor": "gougou槐宏文",
      "citation": "https://www.pystone.net/notes/game-programmer-core-competency/#gougou%E6%A7%90%E5%AE%8F%E6%96%87"
    }
  ],
  "claims": [],
  "outgoing": [],
  "incoming": [
    {
      "id": "note:game-graphics-and-runtime",
      "title": "游戏图形与运行时",
      "url": "https://www.pystone.net/notes/game-graphics-and-runtime/",
      "atlas": "https://www.pystone.net/?node=game-graphics-and-runtime#knowledge-atlas",
      "label": "游戏图形与运行时",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "Unity中的““游戏程序员核心竞争力”问题总结”导航项",
      "citation": "https://www.pystone.net/notes/game-graphics-and-runtime/#unity"
    }
  ],
  "contentMarkdown": "# “游戏程序员核心竞争力”问题总结\n\n> [!note] 来源与性质\n> 本文是对知乎“游戏程序员核心竞争力”相关问题下多位答主观点的摘录与整理，不代表统一结论。答主名称用于区分原观点；引用和转述应回到原页面核验上下文。\n\n> 创建时间：2020/6/7 22:28\n\n## 道理\n\n**缓解焦虑的唯一办法，只有提高能力。**\n\n## 研究领域\n\n  1. 客户端渲染\n  2. 服务器架构\n  3. gameplay专家，游戏逻辑\n  4. 技术管理/主程序\n  5. 优化\n  6. 引擎功能开发\n\n## 内容搜集\n\n## MaxwellGeng\n\n什么叫“数学比较差，做不了图形的东西”？ 我也软件工程在读，我数学底子也差（微分和积分一个BC一个C了解一下？），现在起码通了一遍PBR的材质和后处理特效了，也跟着GDC和Siggraph分享以及Github上众多前辈留下的脚印比着葫芦画瓢写了一套晃晃悠悠的渲染管线了，这不叫“图形学的东西”吗？CPP底子薄？谁CPP底子不薄啊？？生下来就会啊？！\n\n## Jerish\n\n我有价值，起码当前的我是有竞争力的，我在UE4上（以及相关技术）的功底就是我当前的核心竞争力。我有一个特点，就是能钻研，你只要有源码我就能看，愿意主动看，而且还尽可能要求自己都看懂，看懂还能给人讲明白，能正确的修改其中的问题。\n\n**竞争力就是你的必要性以及不可替代性。必要性是指你所在的技术位置很重要，很多游戏团队都需要。不可替代性是指花同样的成本（或稍微高一些）去找一个能替代你的人很困难。**\n\n在完成自己的任务后就开始研究身边人的工作内容，看看他们做的东西难点在哪？我有没有办法解决？差距在哪里？同时，我在空闲时间就去看各大游戏公司的招聘条件，主程什么要求、高级程序员什么要求，我离这个要求有多远。实在一点的说，衡量你竞争力的标准就是你能不能找到工资更高的工作，所以你完全可以通过网络，技术qq群等去查找你需要的能力。\n\n![](assets/0012 - “游戏程序员核心竞争力”问题总结__resource-001-509268ff5ab7.png)\n\n专心搞技术，那么就 **客户端渲染** 、 **服务器架构** 选一个不停的深入研究\n国内短期还不会需要 **gameplay专家**\n如果想走 **技术管理** ，那就不要在意客户端服务器gameplay，能学多少学多少，然后多跟项目，了解各方面的技术与项目管理细节。我在和主程沟通的时候，发现他什么都懂，可以流畅的与所有程序沟通不同的技术，定制目标，安排任务，还能提出建议给出参考资料。这就是 **主程序** 的竞争力。\n\n## flashyiyi\n\n做架构的，做图形的，做战斗的，做UI的，做优化的，做工具的\n\n程序员只靠技术，竞争力确实比较有限，但只要你能稍微跨点界，你的竞争力都会飞速上涨，跨美术或者策划都行， **管理能力强** ，也是优点。\n\n**架构** 就不用说了，基本都是老资格。重要程度也不用多说。\n\n做 **优化** 的不是说只做优化，而是会做优化。你会做优化，你就有了自己的核心竞争力。说的明白点就是搞底层的。\n\n**做工具的——引擎功能开发** 要点是了解各个开发者的真实需求，而且架构能力要好，通用性要高，做出来的东西不至于没人愿意用（随便找个人来做这个的结果通常都是没人用）。我这个名字可能不太好，其实就是做引擎的。但现在没必要做引擎，所以就是做通用组件，搞编辑器啥的。\n我举个具体的例子，一个数据编辑器的要点是什么？1.修改简单，具体做法就是通过元标签生成界面。2.热更，修改数据后在游戏内部就能生效。然而这种需求，基本上不要指望策划或者美术会给你提，他们只会缺什么要什么。这得靠你的悟性。当然实现上也不能说没有难度。\n\n**图形** 好像也不用提，因为稍微有点门槛。图形后面还可以转TA，必要性更高，即使是国内的低级项目也有需求（高级的图程，不做牛逼东西，确实不太用得上）。\n\n做 **战斗** 的，基本就是写逻辑，oop能力要强，基本也不会没人要。而且做战斗的经常会直接参与战斗细节的调整，因为自己调比暴露参数快多了，细节参数需求也很难到位，尤其遇到纠缠在一起的复杂逻辑。能自己调战斗的程序员必然是有竞争力的，没有也有，毕竟逻辑足够复杂，而且招到合适的不比招个图程容易。如果有人觉得图程更难，说明他们游戏的逻辑部分太简单。逻辑这东西，难度是随着复杂度指数级上升的。\n\n## 顾煜\n\n**缓解焦虑的唯一办法，只有提高能力。**\n不是只有做图形学才是做游戏开发的唯一出路，游戏开发领域值得学习的东西太多了。\n\n先打好基础。游戏开发本质上还是软件开发，编程语言本身、设计模式、架构、软件工程知识等，都要深入学习。\n\n再从Gameplay切入。寻路、人物行为、高层动画、网络同步方案、UI界面、各种脚本，高层gameplay一般比较直观，不存在太多的前置技术需求，每一个领域都是可以快速切入，在几个月里面深入熟悉。\n\n然后考虑偏底层的模块。多线程、资源管理、内存管理、性能优化、工具链、渲染等等。这些领域需要一些前置的技术学习，但每一个领域也都不是学不会的，只是费时更久些。\n\n最后方方面面知识都接触过了，融会贯通，培养技术的想象力，能结合各种技术，随时结合已有的技术，解决具体的问题。\n\n## gougou槐宏文\n\n最稀缺的人才，就是高质量独立游戏制作者的模式，一个人可以包揽设计和实现，一个人可以完成迭代，从设计到打磨玩法全部做好（需要动画美术支持可能），这是最理想的gameplay最稀缺的人才。\n\n做游戏是工程学，不是做研究。一个好的工作室的技术积累，大部分的时间不是研究高精尖的算法，而是 **在优化自己的生产管线** 。也就是说，如何 **提高自己工作室某个类型开发过程的效率** ，降低开发成本，优化迭代速度，靠着强大的产出工具链产出内容，完成优秀的产品。如果你仔细看看很多gdc关于pipeline的talk，看看虚幻引擎的工具集，等等，你会发现，这里面不只是技术的积累，更是在某一个游戏领域经验的积累。比如ue4的cinematic的工具集，没有做过很多大型3A游戏的cine的经验是没有办法优化的如此好的，这里面当然需要好的程序技术，但是也需要对这个行业，对游戏开发很懂的人才能做出来，这不是一个算法的问题。好的pipeline可以极大的节省成本，优化流程，是一个游戏工作室最核心的竞争力和技术积累之一。\n"
}
