Полезное

Мы Вконтакте

Discord канал

#
Пред.
12
Аватара пользователя
Пользователь
Сообщения: 6
Привет, коллеги.
Нужна подсказка по компилированию и тестированию проекта из VisualStudio.
При тестировании в VisualStudio запускается какая-то старая версия уровня, и ни как не получается ее обновить.

Проект компилируется в папку: ...\Binaries\Win64\
И даже если полностью удалить из нее все файлы, все равно там появляется новый билд со старым уровенем.

При компилировании и запуске из редактора UnrealEditor все нормально.

Пытаюсь запускать тест из VisualStudio для того чтобы каждый раз не перекомпиливать проект в редакторе Unreal.
А главное, чтобы не крашился редактор при появлении исключения в результате ошибок выполнения C++ кода.
(На сколько я понял, краш редактора не избежать)
При появлении исключения при запуске в режиме дебага из VisualStudio, удобно видеть место, где произошла ошибка, и редактор UnrealEditor перезапускать не приходится.


VisualStudio настраивал в соответствии с документацией:
https://docs.unrealengine.com/latest/IN ... index.html
https://docs.unrealengine.com/latest/IN ... index.html

Из доступных конфигураций (SolutionConfiguration) ставлю "DebugGame".
Некоторые изменения все же происходят, например текст сообщения, но уровень целиком остается прежним.
При этом, не могу понять, по какому принципу он выбирает версию уровня.
После двух недель разработки, может собираться уровень двух-дневной давности,
но ни как не удается получить тот, что в данный момент существует в редакторе.
В актуальный уровень можно попасть только при запуске из редактора Unreal, при этом в VisualStudio ничего не меняется.
Потому, каждый раз приходится переходить в редактор, перекомпиливать и надеется, что он не закрашится из-за незамеченной ошибки.
Под уровнем подразумеваю набор и расположение объектов расставленных в UnrealEditor.

Буду рад любым подсказкам и идеям решения проблемы.

Может подскажете еще какой-то способ экономить время на компилировании и ошибках выполнения.
Аватара пользователя
Пользователь
Сообщения: 474
Файлы для конечной компиляции берутся из папки "Intermediate". Если ты компилируешь с открытым редактором , то перезаписывается не твойпроект.dll ,а создается скорее всего другая dll для хотрелоада,что бы не перезапускать редактор, например : твойпроект-5454.dll
Загружается "старый" уровень , потому что в нем скорее всего находятся или присутствуют ошибки (например ошибка в каком то блупринте или классе, по этому компиляция уровня не проходит) , либо , что скорее всего будет верным - это связано с тем что я написал выше. То есть компиляция идет у тебя в "твойпроект-5454.dll" (как пример) и при запуске и компиляции из редактора , редактор использует именно "твойпроект-5454.dll" (линковка именно с ним идет), если же ты компилируешь непосредственно из студии , и уже оттуда запускаешь "игру" , то для загрузки используется только "твойпроект.dll"
Не уверен актуальна или нет настройка для студии, которую ты делал для UE(из доков) , но в последних версиях я ничего не создавал и не настраивал в студии , при создании проекта все необходимые настройки создает утилита анриаловская. Так что нет смысла запариваться.
Студия не всегда видет все ошибки, которые могут возникнуть, связано с тем что в UE много всяких макросов , и скорее всего ты можешь или будешь получать кучу всякого непонятного шлака с/или OtherErrorCommpilation (или как то так,чет не помню). По этому удобнее определить ошибки, если суть их не ясна или лежит в непонятной области запустив компиляцию из эдитора, он скорее всего более детальную инфу выведет для понимания природа ошибки.
Если компиляцию делаешь из студии , компиляция проходи без ошибок ,но в эдиторе творится непонятная ересь , то лучше перезапустить редактор.
Ну и возможнные непредсказуемые краши,ошибки компиляции и тд и тп (в общем что нельзя как то объяснить) могут появляться при использовании версии движка 4.10 и студии 2015 с SP1.(пока рекомендую студию 2015 без сп1 использовать, насколько актуальная инфа сказать не могу ,но по этому вопросу есть тема у эпиков на форуме,последний раз когда смотрел - проблема не была решена)
Аватара пользователя
Пользователь
Сообщения: 6
Большое спасибо за ответ, хоть и немного сумбурный. Сейчас попробую разобраться.

Zhernovoy Sergey писал(а):
Файлы для конечной компиляции берутся из папки "Intermediate". Если ты компилируешь с открытым редактором , то перезаписывается не твойпроект.dll ,а создается скорее всего другая dll для хотрелоада,что бы не перезапускать редактор, например : твойпроект-5454.dll

В моем случае при компилировании из студии, нет ни какой разницы, открыт ли редактор. Результат всегда один. Здесь уточню, что я не делаю билд всего редактора, а только сам игровой проект. То есть, по кнопке "Старт" запускается только окно с игрой, а не редактор. (если в SolutionConfiguration поставить "DebugGame Editor", то он скомпилит и запустит редактор, что очень долго и не нужно)

Zhernovoy Sergey писал(а):
Загружается "старый" уровень , потому что в нем скорее всего находятся или присутствуют ошибки (например ошибка в каком то блупринте или классе, по этому компиляция уровня не проходит)

Это мало вероятно, так как если жать кнопку компиляции из редактора, и запуск там же, то все работает отлично, с актуальным уровнем, блупринтами, кодом C++ написаном в студии и тд. Единственное что не нравится в этом случае, это постоянное переключение в другое окно для нажатия кнопки, и вероятность краша всего редактора из-за возможно допущенной ошибки. Которую потом придется искать только по краш-логу

Zhernovoy Sergey писал(а):
Не уверен актуальна или нет настройка для студии, которую ты делал для UE(из доков) , но в последних версиях я ничего не создавал и не настраивал в студии , при создании проекта все необходимые настройки создает утилита анриаловская. Так что нет смысла запариваться.

Ставил утилиту в соответствии с той же статьей, и не в курсе, что именно она там настраивает. :( Ткни пожалуйста, где надо брать правильную утилиту? Возможно, в статье ссылка на неактуальную. Может и правда с настройками файлов что-то не то.

По поводу последнего абзаца. Да действительно, студия выдает не совсем точные описания ошибок и уточнять проще из редактора. Но даже если программировать способом постоянных переключений в редактор (что выглядит как минимум странно), то все равно не решается проблема краша редактора от ошибок на этапе выполнения. Которые будут по-любому. Не возможно сразу писать так, чтобы никогда ничего не сломалось. И в этом случае, для исправления остается только довольствоваться крэш-логом, после поломки всего редактора. А для нового теста ждать повторной полной его загрузки (вместе с лаунчером, который всегда грузится следом), перекомпилирования и запуска. В общем, не менее 5 мин на исправление одной строчки.

Может у меня что-то с подходом не так? Как нормальные люди то программируют, неужели все так мучаются и теряют кучу времени?
Аватара пользователя
Пользователь
Сообщения: 860
Violoniste писал(а):

Буду рад любым подсказкам и идеям решения проблемы.

Может подскажете еще какой-то способ экономить время на компилировании и ошибках выполнения.


Выставляем тип проекта в VS - DebugEditorGame
Используем Miscrosoft Visual Studio 2013
_________________
https://www.facebook.com/groups/uejob/
Аватара пользователя
Пользователь
Сообщения: 474
Andy_rst писал(а):
Violoniste писал(а):

Буду рад любым подсказкам и идеям решения проблемы.

Может подскажете еще какой-то способ экономить время на компилировании и ошибках выполнения.


Выставляем тип проекта в VS - DebugEditorGame
Используем Miscrosoft Visual Studio 2013


Это подойдет для проектов 4.9 и ниже , для 4.10 уже 2015 надо студию

2 Violoniste на это внимание то обратил ? :
Цитата:
Ну и возможнные непредсказуемые краши,ошибки компиляции и тд и тп (в общем что нельзя как то объяснить) могут появляться при использовании версии движка 4.10 и студии 2015 с SP1.(пока рекомендую студию 2015 без сп1 использовать, насколько актуальная инфа сказать не могу ,но по этому вопросу есть тема у эпиков на форуме,последний раз когда смотрел - проблема не была решена)


Violoniste писал(а):
Это мало вероятно, так как если жать кнопку компиляции из редактора, и запуск там же, то все работает отлично, с актуальным уровнем, блупринтами, кодом C++ написаном в студии и тд. Единственное что не нравится в этом случае, это постоянное переключение в другое окно для нажатия кнопки, и вероятность краша всего редактора из-за возможно допущенной ошибки. Которую потом придется искать только по краш-логу


Что ж у тебя за ПК если тагую тягость доставляет переключение в другое окошко и нажатие кнопки ? В чем проблема то , если к тому же компилируется все на ура. Крашиться редактор не должен ,только если ты непосредственно допустил ошибки в коде, которые влияют на работоспособность программы в целом ,типа обращение к пустому указателю и тд.
Я компилирую весь проект из под самой студии, проблем никаких нет , только если не могу понять природу ошибки с результатом овереррор,то компилирую из под редактора. + в тот или иной момент может слитать у тебя линкова между эдитором и студией ,такое у меня иногда происходило...
Если ты уверен как бог в том что у тебя все правильно , и ошибки быть не должно , то смотри пункт про vs2015 и sp1 . Я тоже компилирую проект очень часто, проблемы возникают редко, достаточно перезапустить редактор и все ок становится

Violoniste писал(а):
Ставил утилиту в соответствии с той же статьей, и не в курсе, что именно она там настраивает. :( Ткни пожалуйста, где надо брать правильную утилиту? Возможно, в статье ссылка на неактуальную. Может и правда с настройками файлов что-то не то


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

Violoniste писал(а):
Которые будут по-любому. Не возможно сразу писать так, чтобы никогда ничего не сломалось. И в этом случае, для исправления остается только довольствоваться крэш-логом, после поломки всего редактора. А для нового теста ждать повторной полной его загрузки (вместе с лаунчером, который всегда грузится следом), перекомпилирования и запуска. В общем, не менее 5 мин на исправление одной строчки.


Ну да , без ошибок никуда , так или иначе будут появляться , из лога можно многое понять , скинь хотя бы пример такого лога где ты "страдаешь" )))
Так же непонятно зачем ты перезапускаешь лаунчер , сам эдитор поди тоже закрываешь - просто реопен своего проекта в эдиторе сделай.

Если вышенаписанное не помогает смотри пункт про vs2015 и sp1 :)

Ну и скрины скрины скрины , что бы понять что у тебя происходит,гадать можно до бесконечности (хотя бы пример лога из краша редактора)
Аватара пользователя
Пользователь
Сообщения: 6
Да, студию я сейчас попытаюсь переставить без обновления 1. Хотя, есть подозрение, что это не относится ни к одной из моих двух проблем (устаревший уровень в студии и краш редактора из-за моих ошибок в коде).

Цитата:
Что ж у тебя за ПК если тагую тягость доставляет переключение в другое окошко и нажатие кнопки ? В чем проблема то , если к тому же компилируется все на ура.

Да это не тягость. Просто выглядит как минимум странно, кликать на кнопку в другом окне. Я так и до установки плагина мог замечательно работать. Зачем он тогда вообще нужен? Разработчики плагина могли бы тогда хотя-бы кнопку перенести в студию. Потому, мне и кажется, что я что-то не понимаю в его работе. Он вроде должен иметь возможность компилировать и запускать проект без редактора.

Цитата:
Крашиться редактор не должен ,только если ты непосредственно допустил ошибки в коде, которые влияют на работоспособность программы в целом ,типа обращение к пустому указателю и тд.

Ну да, :) из-за этого он и крашится. Не сделал проверку на существование объекта после спавна и обратился к нему. Все, перезапуск всего редактора на 5 мин. Опять же, странно, что редактор ни как не защищен от этого. Почему-то это не является отдельным процессом и крашится из-за любой ошибки программиста. Первый раз встречаю такую среду разработки.

Цитата:
Если ты уверен как бог в том что у тебя все правильно , и ошибки быть не должно , то смотри пункт про vs2015 и sp1

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

Цитата:
Ну да , без ошибок никуда , так или иначе будут появляться , из лога можно многое понять , скинь хотя бы пример такого лога где ты "страдаешь" )))

Лог мне понятен, просто удобнее видеть место в коде, и не искать его по текстовому стеку ошибки. Такое было бы возможно при запуске проекта из студии в дебаг режиме. И оно же запускается, только устаревшее. А скинуть страдания могу разве что в видео, как сижу и жду очередной загрузки редактора :) Уходит куча времени.

Цитата:
Так же непонятно зачем ты перезапускаешь лаунчер , сам эдитор поди тоже закрываешь - просто реопен своего проекта в эдиторе сделай.

Ну так то можно и не закрывать, но это дополнительные затраты памяти.
А как сделать реопен проекта в едиторе, если он целиком убился?


Ну и для того чтобы точно было понятно о чем я, результат обращения к пустому указателю.
Изображение

После чего редактор полностью закрывается. Можно нажать "Send and Restart" и идти на кухню за печенками.
Аватара пользователя
Пользователь
Сообщения: 474
Violoniste писал(а):
В том и дело, что краши из-за моих ошибок. Ни кто не может писать код как бог, чтобы ни одной ошибки. Почему из-за этого каждый раз должен ломаться весь редактор?

Потому что линковка редактора идет к dll в которую ты компилируешь проект ,а запуск из среды редактора это не полноценный запуск игры как таковой

Violoniste писал(а):
Ну да, :) из-за этого он и крашится. Не сделал проверку на существование объекта после спавна и обратился к нему. Все, перезапуск всего редактора на 5 мин. Опять же, странно, что редактор ни как не защищен от этого. Почему-то это не является отдельным процессом и крашится из-за любой ошибки программиста. Первый раз встречаю такую среду разработки.


Что мешает сделать элементарную проверку на NULL ? если ты непонятно к чему обращаешься то крашится все целиком , проблемы в этом не вижу , кроме как подходить к вопросу более правильно , а именно добавлять нужные проверки

что косается лога , ошибка появляется в shisingle.cpp на 32 строке в функции спавнбулет
Аватара пользователя
Пользователь
Сообщения: 6
Цитата:
Что мешает сделать элементарную проверку на NULL ?

Человеческий фактор. Никто не может знать на перед все возможные варианты. Тогда бы в мире не существовало профессии "Тестеровщик ПО". Так же как и наличие всевозможных дебаггеров и автоматических тестов.

Цитата:
если ты непонятно к чему обращаешься то крашится все целиком , проблемы в этом не вижу , кроме как подходить к вопросу более правильно , а именно добавлять нужные проверки

То есть, выход здесь один - научиться программировать как бог, чтобы после тебя сразу все шло в релиз, так как там ошибок быть в принципе не может.

Цитата:
что косается лога , ошибка появляется в shisingle.cpp на 32 строке в функции спавнбулет

Да, это я сам прочитать могу.

Очень жаль, что ни одного решения так и не нашлось :(
В любом случае, спасибо за ответы.
Аватара пользователя
Пользователь
Сообщения: 474
Violoniste писал(а):
Человеческий фактор. Никто не может знать на перед все возможные варианты. Тогда бы в мире не существовало профессии "Тестеровщик ПО". Так же как и наличие всевозможных дебаггеров и автоматических тестов.

Это ж как надо программировать и допускать ошибки, что бы от них самих же в итоге и уставать , то есть наступать на теже самые грабли все время ? То есть ты работешь с указателем , знаешь что если он будет NULL - То это породит ошибку из-за которой у тебя крашится все, но ты упорно не хочешь делать проверку хотя бы на не NULL? Это бы решило большую часть твоих крашей и ошибок, которые не были выявлены при компиляции проекта. Странный ты какой то...
Аватара пользователя
Пользователь
Сообщения: 6
Цитата:
Это ж как надо программировать и допускать ошибки, что бы от них самих же в итоге и уставать , то есть наступать на теже самые грабли все время ? То есть ты работешь с указателем , знаешь что если он будет NULL - То это породит ошибку из-за которой у тебя крашится все, но ты упорно не хочешь делать проверку хотя бы на не NULL? Это бы решило большую часть твоих крашей и ошибок, которые не были выявлены при компиляции проекта. Странный ты какой то...

Кто имеет мало-мальский опыт в разработке крупных проектов прекрасно понимает о чем я.
Последним абзацем ты практически назвал меня дауном. Не понимаю, зачем прибегать к оскорблениям.
Хорошие программисты обычно самореализуются в написании приложений, а не в унижении других на форумах.
Думаю, на этом можно закончить. Помочь ты все равно не в силах.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница