Wake of Gods Forum | Форум Во Имя Богов

Full Version: Разные вопросы
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Quote:Как доказательство - убранные из ЭРЫ старые воговские кампании. Чем помешали?
Это же не доказательство. Там достаточно было поменять режим вогификации по умолчанию или порядок загрузки скриптов или обработку "!!!" в коде. Проще говоря, просто никому не интересно даже пару строк в них править и дальше попытаться потестировать игру, пройдя кампанию.

Quote:И эпопея с обновлениями WoG Scripts, которые на WoG 3.58f особо и не глючат, а на ЭРЕ в ванильном варианте - не редко лезет ругань отладчика и вылеты.
Из факта, что что-то глючит, не следует заключение о плохой поддержки ЕРМ 1. Под ЕРМ 1 понимается коллекция документированных команд, триггеров, переменных и описания их работы. Помимо этого есть масса недокументированных особенностей и ошибок. Если код полагается на них, то он становится непереносимым с любым языком программирования и с любой средой.

Доказательствами служат демонстрации разницы в работе команд, переменных, событий. Выше я уже писал, что эту разницу оцениваю в условный 1% или меньше. Где-то нужно вог-опции вручную сбросить, где-то явно инициализировать временные переменные, не полагаясь на 0.

Иллюстрация: в старом движке вызовы free(мусорная память) не приводили к вылетам, а vy100, где y100 = -100000 могло работать без проблем и портить память. Баги исправили — появились вылеты с памятью и ошибки во время выполнения на некорректных данных.

Думается, что ты хочешь сказать на деле, что есть плохая поддержка старых багов, ошибок, недокументированных возможностей и т.д. Тут соглашусь. С новыми инструментами мы устранили несколько утечек памяти, а код ЕРМ в WoG Scripts ребята регулярно обновляли, убирая зависимость от неициализированных переменных или исправляя ошибки, которые раньше движок «проглатывал».

Когда есть баг в Эре в реализации конкретной ERM команды, мне об этом так и пишут и присылают код для проверки. Давно не видел подобных отчётов.
Правильно заметили, я изначально начинал делать мод под Wog 3.58f, потом перебрался на Эру. Глубокими познаниями не занимался, всё делал опираясь на воговские кампании и некоторые коды с форума. Буду как-то выкручиваться, наверное всё-таки придётся на Эру 3 перебираться и кое-что переделывать (сюжет домового в бане к примеру). Вылет посреди игры очень раздражает, такое не хочется выпускать в релиз.
Barin, Если желаете, чтобы в ваш мод играло как можно больше игроков - придерживайтесь 2 правил:
- Мод должен полностью работать на последней ERA
Это позволит устанавливать мод на сборку через Лаунчер в один клик.
- 100% переводимого текста должно быть в json.
Позволит локализовать любой мод за пару минут.
Берс, а этот новы менеджер памяти, как он будет влиять на совместимость?

У меня нет malloc в плагинахъ.

Для выделения памяти в основном используется геройский new (0x617492)
В homm3h это o_New()_
Еще память выделяется, когда что-то скачивается из лодов.
Пример 0x55C9C0 (LoadDef вроде)

И еще память в куче может выделяться под контейнеры std::string, std::vector, std::map и так далее.
Я не вижу, как Эра может это отследить.
Отказаться от использования std::vector - не, это не вариант.
Guru105, да никак, старые плагины могут работать без перекомпиляции. Если используешь new, то выделенная память зачтётся на счётчик игры.

Контейнеры Эры не отследит, если не используешь последний SDK. Там перехватываются функции new, new[], delete, delete[], что на ряде компиляторов даёт частичное отслеживание. Собственно, так daemon_n у себя утечки памяти в плагинах и нашёл.
То есть можно не волноваться, большое спасибо)
И еще мне очень нравится мой новый ник)
Reference URL's