@
esolve 差别挺大的,各个方面的差别。之前和朋友聊,可能和做游戏最接近的也就是做 Java 中间件吧。但反过来说,如果做游戏做到一定程度,要转其他的行业,也还是能胜任的,原因后面说。
从组织上来说。做游戏大多数都是工作室的组织结构,里面分程序、美术、策划。一个工作室不大,几个人到几十个人不等,看游戏规模。这么分下来,程序其实没多少人。大多数游戏开发的程序一般都遵循少而精的原则来招人。即使游戏做大了,最多也就扩充部分人,然后再拆分出几个工作室出来。不会像互联网那样,几十个人围着一个组件做。
从业务上来说。对游戏需求的理解一般不能直接沿用到其他行业,逻辑的实现方式也因为底层结构不同,也不能直接沿用到其他行业。不过思考问题的方式整个软件行业都差不多,有能力吃下游戏逻辑,其他行业的业务代码也不会有什么问题,只是花时间理解需求和底层结构而已。
从技术上来说。这里针对涉及底层技术的后端,而不是一般的业务逻辑实现。由于游戏开发是工作室性质的,程序少而精,所以主程一般什么都要会!从长短连接的网络通讯、数据库、缓存、线程进程管理、多机集群,到运维、后台页面框架、巨量日志的生态分析,到关键游戏逻辑的各种 AI 算法、各种复杂战斗系统的实现等等,麻雀虽小,五脏俱全。
由于游戏通常情况下,比其他行业更容易引入用户,所以游戏程序面对性能挑战也会来的更早。你不可能有时间来慢慢改架构来应对流量的急剧上升,所以早期的架构制定很关键。
游戏的技术挑战大致分为关键系统实现、上线时的单机负载、游戏火了以后的集群实现上的挑战。大部分游戏基本在前两项就过不去了。由于游戏的高响应要求(比电商等的响应时间高一个数量级),单机的高承载以及逻辑和底层的强关联性,游戏逻辑状态的复杂等,再加上服务器很精贵、开发时间很紧张、人员少,所以做游戏开发很有压力!
但相对的,只要经历过项目上线,就会对技术有很大的提升,特别是那些上线过全球统一服的游戏!