RU UA
Технології

EVE переїжджає на Python 3 — і чому це може зачепити твій гаманець

Під кожним стрибком крізь ворота, кожним ордером на ринку і кожною флотською бійкою лежить дуже багато коду на Python. І донедавна — на його версії, яку весь інший світ поховав шість років тому.

EVE вийшла у 2003 році на Stackless Python — особливій збірці мови, яка вміла дешево жонглювати тисячами задач одночасно. Саме тому один сервер тримає натовп пілотів в одній системі.

Версію мови востаннє змінювали у 2010 році. Відтоді виросло покоління, яке встигло народитися, відучитися в школі й почати літати на фрегатах, а гра весь цей час працювала на тому самому Python 2.7. Працювала, треба визнати, чудово — тому й не чіпали.

Проблема в тому, що Python 2 офіційно закінчився у 2020-му. Сучасні бібліотеки, зневаджувачі та профайлери пишуться під трійку, і кожен рік на старій версії означає, що ще якийсь корисний інструмент стає недоступним, а замість покращення гри доводиться самим латати те, що в усіх інших працює з коробки.

Масштаб, від якого стає незатишно

2 400 000  рядків коду
   20 000  файлів

Перший замір, утім, виявився приємною несподіванкою: 95,9% файлів уже нормально збираються обома версіями мови. Того, що взагалі відмовляється запускатися, набралося близько 3 300 рядків:

  • приблизно 1500 старих команд друку
  • близько 800 чисел, записаних у древньому форматі
  • десь 600 обробників помилок у синтаксисі, який застарів ще до виходу самої гри
  • і 50 штук оператора «не дорівнює», записаного значком настільки старим, що половина живих програмістів його ніколи не бачила

Усе це лагодиться майже механічно, інструментами, які спільнота писала рівно для таких переїздів.

А тепер найцікавіше

Механічна частина — розминка. Справжня робота попереду, і її приблизно двадцять тисяч рядків: код, який чудово збирається обома версіями, але поводиться по-різному.

Класичний приклад розробники наводять самі: ділення. У старій мові «одиниця поділити на два» дає нуль. У новій — нуль цілих п’ять десятих.

А тепер згадаймо, чим у грі бувають числа. Шкодою. Координатами. Грошима.

Двадцять тисяч місць, де може непомітно поїхати арифметика, і кожне потребує, щоб людина подивилася очима й вирішила, як правильно. Автоматом таке не лагодиться.

Що це означає для нас

Офіційна позиція: найближчим часом — нічого, і це мета. Успіх переїзду вимірюється тим, що гравець не помітив узагалі нічого, крім того, що подекуди стало жвавіше.

Перший етап уже викочений на бойовий сервер. Окремо згадано, що готують до переїзду серверну частину агентських місій — тож якщо ти саме зібрався ходити місії, є певна ймовірність опинитися першим, хто помітить дивину в нагороді чи репутації.

Якщо щось видасться неправильним — це рівно той випадок, коли репорт справді корисний. За такого обсягу ручної роботи частину помилок неминуче знайдуть саме гравці.

Чи варто хвилюватися

Не надто. Значно цікавіше інше: робота затівається не заради галочки, а щоб гру стало можна нормально розвивати. Свіжі версії мови принесли найпомітніші прирости швидкості за всю її історію — а це впирається просто в те, що болить: масові битви й ринок у час пік.

Двадцять три роки на одній версії — це, якщо розібратися, комплімент тим, хто її тоді обирав.

← До всіх новин

Ще почитати