首先来说Python用于大型游戏,分四种情况:客户端,引擎和基本框架层面,毫无希望。
客户端,逻辑层,Python没问题、很擅长,但性能方面不是Lua的对手。
服务器,框架层,特别适用于某些交互不频繁的游戏类型;用在MMO-RPG等类型上有性能问题,但不是不可以。
服务器,逻辑层,没问题。
像猪厂两大游戏客户端引擎,NeoX 和 Messiah,都使用 Python 作为脚本语言。
先来看服务端:
都是纯 Python。因此很多代码可以服务端客户端共用,尤其是数据结构定义,序列化等。用过的才知道前后端用同一种语言有多方便。同一套 Excel 配表,用 Python 写的工具转成 py 文件,然后服务端和客户端都用这个。
同一个类,服务端用,客户端也用,还需要啥数据格式转换啊(滑稽)。
效率方面:
运行效率大部分情况下都不是问题,开发效率却可以提升几个数量级。
静态类型语言 vs 动态类型语言:
这是个有争议的话题。个人看法这是一种 trade-off,牺牲逻辑的严谨性,以及架构,来换取开发效率。这样做当然很多弊端,只是在目前这个阶段,开发效率比什么都重要,真的。
多线程:
客户端逻辑没有必要。游戏项目从来都不是计算密集型的,逻辑本来就够复杂了,多线程会进一步增加复杂度,得不偿失。
Hotfix:
网络游戏正在逐渐成为一种服务,成为每个人的日常娱乐方式。服务的稳定也变得越来越重要,如果隔三差五就得停服修bug,客户端动不动就得整包更新,会严重影响玩家体验。而用 Python 进行热更是语言原生支持的,意味着实现成本很低,风险低,操作也很方便。
最后:
不要想太多,也不要听风就是雨,实践才能出真知!