Python有做大型游戏的潜力吗?
岂止是有潜力,简直是很合适!
猪厂两大游戏客户端引擎,NeoX 和 Messiah,都使用 Python 作为指令码语言。
你最近所了解的比较火的挂着猪厂旗号的,也都是 Python 写的。
骑马与砍杀(Mount & Blade)最早是土耳其一对夫妇自己因兴趣所致,一起用Python编写的游戏。
后来两人把游戏放到网上,许多网友非常感兴趣,于是加入了开发团队。渐渐的人多了起来,Armagan Yavuz成立了Talesworld工作室,并且在Paradox旗下发行了Mount amd Blade 1.0,并在2010年发行了带有联机能力的Mount amd Blade Warband,以及后来的火与剑资料片和维京传奇资料片。
游戏的一大特点是自由的格斗系统,玩家能靠鼠标或者键盘操作角色,总共有上下左右四种攻击动作。可以使用单手,双手和长柄三大类兵器,分别有不同的动作以及优势。此外,最重要的是能够骑着马,带领一队骑兵,在步兵队伍的掩护下,冒着箭雨冲进敌阵,挥舞大刀和战锤或者使用长枪突刺,也可以骑着快马,弯弓搭箭骚扰敌阵。
需要Python资料的话,转发+私信小编“Python”
但是这个游戏最大最大的特点是极其开放的Mod系统。改变最大的mod甚至把整个游戏的基本方式都改变了。
一些专案组甚至不需要分出人力去维护引擎部分,因为引擎本身比较稳。
也就是说,程式绝大部分时间都可以专注用 Python 写逻辑,保持创造力。
还有就是 Python 写各种工具,编辑器,不是一般的爽。PyQt 在手天下我有。
还能和专案程式码无缝衔接。
————————
服务端:
也是纯 Python。
因此很多程式码可以服务端客户端共用,尤其是资料结构定义,序列化等。
用过的才知道前后端用同一种语言有多方便。
同一套 Excel 配表,用 Python 写的工具转成 py 档案,然后服务端和客户端都用这个。
同一个类,服务端用,客户端也用,还需要啥资料格式转换啊(滑稽)。
————————
效率问题:
执行效率大部分情况下都不是问题,开发效率却可以提升几个数量级。
————————
静态型别语言 vs 动态型别语言:
这是个有争议的话题。
个人看法这是一种 trade-off,牺牲逻辑的严谨性,以及架构,来换取开发效率。
这样做当然很多弊端,只是在目前这个阶段,开发效率比什么都重要,真的。
(专案组都要解散了你跟我说你的程式码更好看?)
————————
多执行绪:
客户端逻辑没有必要。
游戏专案从来都不是计算密集型的,逻辑本来就够复杂了,多执行绪会进一步增加复杂度,得不偿失。
(一般情况下不需要,要用的话祝你好运)
————————
Hotfix:
网络游戏正在逐渐成为一种服务,成为每个人的日常娱乐方式。
服务的稳定也变得越来越重要,如果隔三差五就得停服修bug,客户端动不动就得整包更新,会严重影响玩家体验。
而用 Python 进行热更是语言原生支援的,意味着实现成本很低,风险低,操作也很方便。
————————
需要Python资料的话,转发+私信小编“Python”
结论基本上很明确,Python用于大型游戏,分四种情况:客户端,引擎和基本框架层面,毫无希望。客户端,逻辑层,Python没问题、很擅长,但效能方面不是Lua的对手。服务器,框架层,特别适用于某些互动不频繁的游戏型别;用在MMO-RPG等型别上有效能问题,但不是不可以。服务器,逻辑层,没问题。PS:所有的运维工具、专案周边工具、工具链胶水层等等,Python来了其他技术都可以靠边站。
为什么我说的这么武断呢?是因为不同层面的工作,对开发效率、维护效率、执行效率三者的要求是不同的。需求决定方案,这是工程领域的真理。
图解:我们需要在多个方面中间取舍,找到合适的方案。