EVE Online开始迁移Python 3:240万行代码、16年没换版本,升一次级有多难?

来源:互联网 时间:2026-08-30

8月25日,EVE Online官方博客宣布正式开始迁移到Python 3。这款游戏2003年上线,底层一直跑在Stackless Python上。从2007年的Stackless 2.5到2010年的Stackless 2.7,整整16年没换过Python版本。Python 2.7在2020年就官方EOL了,EVE硬是又多扛了六年。

拖延不是因为懒,而是因为风险太大。EVE的代码库有240万行Python,约两万个文件,其中很多代码比当前开发团队里一些成员的年龄还大。更棘手的是数据:每一个角色、每一艘船、每一个技能点、每一笔ISK都储存在这套代码支撑的系统里。迁移必须保证23年的历史数据原封不动地读回来。

第一次扫描给了团队一点信心:95.9%的文件已经能同时在Python 2.7和Python 3下编译通过。但阻塞的3300行代码也很“复古”:大约1500个旧式print语句、800个long类型字面量、600个被淘汰的异常语法、50个<>不等于运算符。很多写法今天的Python开发者都没见过。

真正难的不是语法,是语义。大约有2万行代码在两个Python版本下都能编译,但行为不同。最典型的例子是除法:Python 2里1/2等于0,Python 3里是0.5。在EVE里,这些数字可能是伤害值、坐标或者ISK金额,每一行都需要人工判断,不能机械替换。

EVE团队的办法是分阶段推进。第一阶段先用Python-Future工具把代码改写成两个版本都能跑的形式;第二阶段再逐行处理语义差异。目标是让玩家“完全无感”,因为这正是迁移成功的标准。对一个运营了23年的MMO来说,玩家无感才是最高的工程赞美。

相关文章

A5创业网 版权所有