Live data from Hacker News

EVE Online moves to Python 3

eveonline.com

11–20 of 234 posts

Re: EVE Online moves to Python 3

#12

[flagged]

Does the game have performance issues? I don't see the need to rewrite unless there is a problem with it

They have to slow down the game tick-rate to accommodate, something they call "Time Dilation": https://wiki.eveuniversity.org/Time_dilation

How much of that is down to processing time is unclear, but I think it's fair to say there is scope for improved performance.

Secondary to that, if you have general performance improvements then you can afford to run a smaller server cluster or smaller servers, reducing costs.

Re: EVE Online moves to Python 3

#14

[flagged]

Does the game have performance issues? I don't see the need to rewrite unless there is a problem with it

Oh my yes. EVE Online can experience issues when a conflict in a solar system exceeds a certain number of players. Each system in EVE is a monolithic process, so, if a conflict gets out of hand, things get slow.

This is referred to as Time Dilation (TiDi) in EVE -- https://wiki.eveuniversity.org/Time_dilation -- it's an interesting engineering rathole, Fenris f/k/a CCP has been pretty open about their stack, and the challenges that have built up.

Anything that speeds up EVE lets more players cram in without experiencing TiDi, and this might let the devs escape Stackless Python, which is another interesting engineer rathole. (It's ratholes all the way down, and this is the one that got EVE on my radar, and has kept it there.)

Re: EVE Online moves to Python 3

#16
Stackless python had such potential, it could be extremely useful in Agent era for long running tasks with durable state.

modern Python went in a somewhat different direction with asyncio, but with tasklet and continuation it could be a much powerful combo.

Re: EVE Online moves to Python 3

#18

> The classic example is division: in Python 2, 1 / 2 is 0; while in Python 3 it is 0.5. Can someone kindly explain this? edit: I misread it as “In Python 2 2.1/2 is 0, while in Python 3 it is 0.5”

From long ago memory: in Python 2, 1 / 2 did integer division. You had to do something like 1 / 2.0 if you wanted floating point division.
Post reply on HN