Jump to content
Korean Random
AddNikita

Изменения в коде игры и BigWorld'е в патче 1.18.

Recommended Posts

Здравствуйте, товарищи мододелы. Вчера вышла новая обнова 1.18. И скажу я вам - много чего поменяли. В сам built-in модуль BigWorld понадобавляли много разных функий, классов , переменных и тд .

 image.thumb.png.dc34ed1c0f1893be732764dc0304688a.png

 

К тому же если передать не все или лишние параметры в класс или функцию, то теперь вылезает это вот.image.thumb.png.b9152cf6089da0b3a1626765e52bc2f9.png

Явно видно, что изменений много, но не понятно, зачем всё это. Вроде бы, добавили только физику разрушения гусениц, но это бред добавлять столько много всего ради каких-то гусениц. Тут явно попахивает чем-то крупным, что введут позже. Ваши предположения, товарищи? 

image.png

Edited by AddNikita
  • Upvote 3

Share this post


Link to post

Short link
Share on other sites

Не думаю, что это связано с отказом от x32 систем. Да и вообще папка win32 в танках осталась до сих пор. (Ну точнее связано, да, но я думаю, что они хотят сделать что-то большое)

Edited by AddNikita

Share this post


Link to post

Short link
Share on other sites

@AddNikita на счёт win32 глянем на релизе как будет.
Я не отменяю того факта что они могут переехать на новее вещи. Хотя это ВГ

Share this post


Link to post

Short link
Share on other sites
14 минут назад, AddNikita сказал:

Не думаю, что это связано с отказом от x32 систем. Да и вообще папка win32 в танках осталась до сих пор. (Ну точнее связано, да, но я думаю, что они хотят сделать что-то большое)

Перепутаны причина и следствие. Это не ради отказа от х32 систем, а отказ от х32 систем ради этого. Чтообы делать новые вещи, нужно выкинуть старьё, которое этому мешает :wink:

 

Мододелам не завидую, работы этот переход навалит много, и это явно только начало. :mellow:

Edited by yepev
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

@yepev мне уже достаточно работы так поднавалило. Они ещё сломали оператор == как-то. Иногда при сравнении просто ошибки вылезают.

Edited by AddNikita

Share this post


Link to post

Short link
Share on other sites
8 часов назад, Kurzdor сказал:

@AddNikita что-что?

Базовый оператор, как он может ещё выкидывать эксепшны?

 

Ну как, точно также как "если передать не все или лишние параметры в класс или функцию, то теперь вылезает это вот.:Default:

 

В 1.18.0.0_СT выпилили файлы *AimingSystem из модуля \AimingSystem\, заменили на нативный AimingSystem.

Share this post


Link to post

Short link
Share on other sites

@Kurzdor Так раньше не это вылезало вот при ошибке.

@Kurzdor У меня есть мод, называется "Неигровые зоны". Так вот у меня там проверка на равенство неких векторов Vector3. Ну и при сравнении мне даёт ошибку, при чём в 1.17 всё работало.

@SkepticalFox в 1.18 структуру карт не меняли, всё прекрасно распаковывается.

Share this post


Link to post

Short link
Share on other sites
17 часов назад, AddNikita сказал:

Вроде бы, добавили только физику разрушения гусениц

О нет, тут здоровенная чистка под капотом в плане питоновского интерпретатора

 

15 часов назад, Kurzdor сказал:

@AddNikita что-что?

Базовый оператор, как он может ещё выкидывать эксепшны?

 

 

легко и непринужденно

 

class A():
    def __eq__(self, _):
        raise Exception


A() == A()

 

Share this post


Link to post

Short link
Share on other sites

@Mixaill ну это я понимаю, но просто как так вышло, что базовая операция в обнове сломалась?
разве что если они не обосрали код Vector3/4

Share this post


Link to post

Short link
Share on other sites

Там весь Python<-->C++ связующий код перелопачен, выкинут BW::PyScript в пользу pybind11, соотвественно все что стучалось в плюсы может работает чуть-чуть иначе

 

Собственно, ЕМНИП, пока не сделаешь pybind11::class_<T>::def(pybind11::self == pybind11::self), реализация метода __eq__(PyObject*, PyObject*) не будет создана, соответственно сравнение плюсового класса из питона будет работать немного стремно.

Edited by Mixaill

Share this post


Link to post

Short link
Share on other sites

@Mixaill Спасибо, учту. Но мне кажется, что это ещё не все изменения, так как если вызывать некоторые новые методы из BigWorld, то игра просто вылетает.

 

4 часа назад, Mixaill сказал:

О нет, тут здоровенная чистка под капотом в плане питоновского интерпретатора

 

Ну это я понял, да. Просто интересно, зачем это всё делается. Это довольно глобальные изменения.

 

На этом просто игра вылетает, все эти новые изменения Python<-->C++ довольно кривые

image.png.b494d5dfc2ce3872dfa5efabb1b20b42.png

Share this post


Link to post

Short link
Share on other sites
Только что, AddNikita сказал:

На этом просто игра вылетает, все эти новые изменения Python<-->C++ довольно кривые

 

Там еще проблема может быть с потоками. Из-за чего при exec в WOTTransmission клиент крашится. Такая беда, например есть с путча ~1.0.0 с BigWorld.wg_collideSegment и аналогичными. Если просто в Орионе сделать print BigWorld.wg_collideSegment(), то будет краш, а если в BigWorld.callback() обвернуть вызов, то сработает. Проблема в том, что в wottransmission.zip\wottransmission\transmitter.py юзается threading.Thread(). Так что если просто проверяешь вызовы чисто через Орион, то для надежности обворачивай их в BigWorld.callback().

Share this post


Link to post

Short link
Share on other sites
3 минуты назад, StranikS_Scan сказал:

 

Так что если просто проверяешь вызовы чисто через Орион, то для надежности обворачивай их в BigWorld.callback().

Пасиб

 

Share this post


Link to post

Short link
Share on other sites
12 минут назад, StranikS_Scan сказал:

 

Там еще проблема может быть с потоками. Из-за чего при exec в WOTTransmission клиент крашится. Такая беда, например есть с путча ~1.0.0 с BigWorld.wg_collideSegment и аналогичными. Если просто в Орионе сделать print BigWorld.wg_collideSegment(), то будет краш, а если в BigWorld.callback() обвернуть вызов, то сработает. Проблема в том, что в wottransmission.zip\wottransmission\transmitter.py юзается threading.Thread(). Так что если просто проверяешь вызовы чисто через Орион, то для надежности обворачивай их в BigWorld.callback().

Кстати да, по умолчанию все нативные функции и объекты непотокобезопасные, и обычно требуют исполнения из основного потока интерпретатора.

Edited by Mixaill

Share this post


Link to post

Short link
Share on other sites

image.png.9f51ab8391c3a5f55b095f0a46506830.png

Не выдало ничего. Но при этом у меня сломалась игра - я не могу выбирать танки и скрипты интерфейсов все сломались.image.thumb.png.ccb8622659a4068ac89aca5a0d354e58.png

Кстати, хотите прикол. В BigWorld.Model() масштаб модели называется не scale, а sacle. ВГ писать разучились:Default:

Share this post


Link to post

Short link
Share on other sites

Лично у меня что поломалось

import BigWorld

try:
    print unicode(BigWorld.wg_getPreferencesFilePath(), 'utf-8', errors='ignore')
except Exception as err:
    print "An error occured during gettting preferences path: ", err
try:
    from bwobsolete_helpers.BWKeyBindings import KEY_ALIAS_CONTROL
except Exception as err:
    print "An error occured during importing key aliases: ", err
2022-08-06 20:48:55.888: INFO: An error occured during gettting preferences path:  decoding Unicode is not supported
2022-08-06 20:48:55.889: INFO: An error occured during importing key aliases:  Unable to convert function return value to a Python type! The signature was
2022-08-06 20:48:55.889: INFO: 	(arg0: unicode) -> BW::KeyCode::Key

 

1. wg_getPreferencesFilePath отдаёт видимо сразу Unicode, как это допустил @Polyacov_Yury
2. Очень странная ошибка при импорте из этого файла, там выполняется сразу:
Это если импортить без try/except
 

2022-08-06 20:52:53.740: ERROR: [EXCEPTION] (scripts/client/game.py, 187):
Traceback (most recent call last):
  File "scripts/client/game.py", line 154, in init
  File "scripts/client/gui/shared/personality.py", line 374, in init
  File "scripts/client/gui/mods/__init__.py", line 19, in init
  File "scripts/client/gui/mods/__init__.py", line 67, in _findValidMODs
  File "scripts/common/Lib/importlib/__init__.py", line 37, in import_module
  File "test", line 2, in <module>
  File "scripts/client/bwobsolete_helpers/BWKeyBindings.py", line 428, in <module>
  File "scripts/client/bwobsolete_helpers/BWKeyBindings.py", line 406, in _buildReverseKeysLookup
TypeError: Unable to convert function return value to a Python type! The signature was
	(arg0: unicode) -> BW::KeyCode::Key

 

Edited by Kurzdor

Share this post


Link to post

Short link
Share on other sites

Лично я одного не могу понять. Проблемы с импортами в OpenModsCore.

Внутри:

>>> from . import events
ImportError: cannot import name events

Снаружи:
>>> from OpenModsCore import events

ImportError: No module named events

Из sys.path выброшен только scripts/game_objects. Вопрос: ЭТО ВООБЩЕ КАК О_О

 

P.S. Код можно посмотреть вот тут: https://github.com/OpenMods-WoT/core/tree/master/source/scripts/client/OpenModsCore

Edited by Polyacov_Yury

Share this post


Link to post

Short link
Share on other sites
13 минут назад, Polyacov_Yury сказал:

Проблемы с импортами в OpenModsCore.

У меня с импортами всё ок.

Share this post


Link to post

Short link
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...