Перейти к контенту

GeorgyS

Пользователи
  • Число публикаций

    4
  • Регистрация

  • Последнее посещение

  • AMKoin

    111 [Подарить AMKoin]

Баланс оценок

4
  1. Всё таки получилось! Проблема была в оптимизации компилятора. Я её изначально решил убрать, чтобы отслеживать больше локальных переменных в отладке, и таким образом случайно всё починил) Потом стало вылетать странное исключение во время создания новой игры, решилось оно не менее странным способом: исключение выбрасывала функция из стандартной библиотеки, которая принимала по значению объект и тут же в первой строке его возвращала. Я всего лишь в классе этого объекта явно прописал пустые конструкторы - всё заработало.Кстати в проекте оптимизации не было, что придаёт ещё больше странности. Наконец отстрелялся, игра работает
  2. Спасибо за совет, но я не собираюсь отступать, хочу сам всё сделать с нуля
  3. Здравствуйте. Есть проблема с движком. Пытаюсь собрать 1.0007rc1. Установил Visual Studio 2005, поисправлял в исходниках всякие ошибки путей в инклудах и ещё по мелочи, и всё без проблем собралось! Игра работает как надо. Но мне нужна сборка в моей 2019 студии, в первую очередь чтобы использовать возможности стандарта языка. Начал сборку со стандартом C++14. Это было сплошное мучение с ошибками на каждом шаге. Но в итоге всё преодолел, все ошибки локализировал, исправил, и движок собрался. Но игра вылетает сразу после стартовой заставки. Несколько дней уже сижу в отладчике и пытаюсь понять, что не так. Параллельно я запустил отладку в 2005 студии и сравниваю между студиями значения локальных переменных на каждом шаге отладки в одних и тех местах кода. Всё вроде одинаково, побочные эффекты те же. Но вот проект, который в 2019, доходит до чтения файла "effects_water.s", затем выполняет множество одинаковых с 2005 действий и вызывает функцию luaJIT_run, с этого момента выполнение уходит в черный ящик (не отслеживается), и в файле lfunc.c в функции luaF_findupval вылетает исключение "нарушение доступа чтения". До этого момента с 2005 студией всё было одинаково. Я долго ковырялся в коде LuaJIT'a. До файла effects_water.s читается несколько других подобных файлов с тем же расширением, и при каждом из них запускается LuaJIT, но функция luaF_findupval вызывается только при effects_water. Я сравнивал, как 2005-я и 2019-я проходят через ту функцию, когда обрабатывается effects_water: на точке останова в luaF_findupval выполнение останавливается трижды. И 2005-я и 2019-я проходят два раза функцию от начала до конца одинаково, но на третий раз у 2019 сильно отличается первый аргумент - lua_State *L. То есть объект по адресу этого указателя имеет другие значения полей. Тут важный момент: этот объект, судя по всему, не должен изменяться - в 2005-й при всех трёх прохождениях через функцию объект неизменен (кроме одного поля-указателя), в 2019 первые два раза он тоже неизменен (кроме того же поля), но на третий shit happens. Дальнейшая отладка плодов не принесла - отследить, кто и откуда вызывает эту функцию оказалось крайне сложно из-за вычурного кода LuaJIT'a. Кто-нибудь сталкивался с такой проблемой, есть предложения? Очень странно, что проблема кроется в LuaJIT'е, его код я точно не задевал, когда пытался всё скомпилить.
  4. GeorgyS

    [SoC] Вопросы по SDK

    Здравствуйте. Почему костюмы и оружие, которые я спавню через SDK, убиты в хлам? Причём оружие имеет неадекватное кол-во патронов (заспавнил бульдог, в игре он оказался сломанным с 63 подстволами!) Версия игры 1.0004. Пытался работать с 1.0006, там заспавненные предметы вели себя адекватно, однако при переходе на другую локацию вылетало Graph point level ID not found. После отката заново отредактировал Кордон (просто заспавнил оружие и костюм), переходы заработали, но предметы убились

AMK-Team.ru

×
×
  • Создать...