Войти
ПроектыФорумСобираю команду

C++ UE4 совместное обучение.

Страницы: 1 2 3 4 Следующая »
#0
12:04, 19 мая 2020

Предлагаю тем кто недавно начал, но как я надеюсь имеет опыт кодинга, сгруппироваться. Пишите сюда или в дискорд burnout#3973

Я перехожу с юньки и у меня куча впечатлений. Не все, к сожалению положительные. Скажем время компиляции или невозможность нормально удалить класс. Еще наличие хедеров, тот еще бойлерплейт. Но в остальном инструмент классный.


#1
(Правка: 17:28) 17:26, 19 мая 2020

qGrin
> Скажем время компиляции
ну на самом деле когда вносишь изменения в один файл и постоянно его тестишь в дебаге получается достаточно быстро
у меня секунд 15 уходит на сборку и секунд 10 на запуск редактора, но комп старый

кстати уже можно править плюсовый код в рантайме, но пока эксперементально

qGrin
> невозможность нормально удалить класс.
удаляешь файлы из папки, если работаешь в студии, то переключаешься на вид файлов в солюшене и там удаляешь
нажимаешь правой на UE проекте и Generate project files

#2
18:13, 19 мая 2020

mitroxa
> если работаешь в студии, то переключаешься на вид файлов в солюшене и там
> удаляешь
Можно через solution explorer удалить?а то везде пишут, что надо оба редактора закрыть.

#3
19:46, 19 мая 2020

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

вообще зачем удалять если можно переименовать без перегенерации проекта в то что нужно, ну или что потом может понадобиться
вот если расположение будешь менять у файла, то начнутся проблемы, и тут уже по любому перегенерацию делать, кстати оно быстро делается, так что вообще не понимаю в чем проблема, долго только запуск студии идет со сканами всеми

кстати очень советую поставить решарпер с++(если пользуешься интелисенс), небо и земля, оптимизирован под уе специально

#4
11:03, 20 мая 2020

mitroxa
> кстати очень советую поставить решарпер с++(если пользуешься интелисенс), небо
> и земля, оптимизирован под уе специально
Да с интелисенс там траблы(мне 11к ошибок насчитала после создания класса), но 8к я пока не готов потратить.

mitroxa
> вообще зачем удалять если можно переименовать без перегенерации проекта в то
> что нужно, ну или что потом может понадобиться
Переименовывать в студии?

mitroxa
> вот если расположение будешь менять у файла, то начнутся проблемы,
Эх, я то думал создать папку for delete и туда все это скидывать, чтоб потом скопом удалять.

Мне кстати с компиляцией только перекидывание всего на SSD диск помог, а то и по 5 минут компилилось на мелком проекте. Сейчас норм, только диск маленький, придется прикупать.

#5
(Правка: 12:02) 12:01, 20 мая 2020

qGrin
> а то и по 5 минут компилилось на мелком проекте.
ну это чет неправильно, может не такой мелкий проект
может быть в дебаге быстрей идет билд и запуск, хз

личку чекни

#6
12:28, 20 мая 2020

Анрил был на ссд, а проект на хдд, мб поэтому. С юнькой вроде так прокатывало.

#7
13:35, 20 мая 2020

qGrin
> Анрил был на ссд, а проект на хдд, мб поэтому. С юнькой вроде так прокатывало.

С какого перепугу с юнькой прокатывало то? у меня юнька на SSD, а проект на HDD и грузится проект соответственно не быстро, а точнее как и должно было быть по времени проекту находящимуся на HDD.

#8
(Правка: 17:22) 14:16, 20 мая 2020

qGrin
1) Для удаления файлов класса необходимо закрыть проект и VS, сами файлы удалить из папки, потом ПКМ на проекте и создаёшь новый .sln. Также потом желательно сделать ребилд из проекта VS, т.к. движок для каждого класса генерит мету для рефлексии, сборки мусора, generated.h файлы и т.п. Поэтому просто удалять из проекта не получится. Про переименование аналогично. Мета файлы генерятся с привязкой к названию класса.
2) C++ код собирается в бинари и потом исполняется, в отличии от C#, который генерит промежуточный код и исполняет в CLR. Конечно это занимает много больше времени, и конечно это расстраивает)) Также тебя ждет отсутствие многих фич типа делегатов и интерфейсов, реализованных в C# на уровне языка. Но в UE есть аналоги этих вещей, хоть и реализованных своеобразно)
3) Сборка мусора например, реализованная в C# на уровне языка опять же, в UE реализована через макрос UPROPERTY() и умные указатели. Однако работает также избирательно. Например ты не сможешь использовать UPROPERTY() с TDoubleLinkedList или TQueue, хотя TArray и TMap - без проблем.
4) Нет возможности создать вложенные TMap, приходится оборачивать контейнер в UStruct.

Чет меня понесло)) но вдруг тебе пригодится и может кому ещё.

ПС В целом движок благодарный, но надо привыкнуть, приучает кодить внимательно. После пары ошибок с nullptr или банальной ошибки на единицу в циклах, и последующими вылетами и пересборками движка, становишься осторожнее)) и дотошнее в коде.

ППС Если есть возможность, то конечно лучше все перенести на ССД, так намного приятнее работать.

#9
(Правка: 17:50) 17:43, 20 мая 2020

AInsolence
> отсутствие многих фич типа делегатов и интерфейсов, реализованных в C# на
> уровне языка
Другое название и отсутствие - не одно и то же. Первое называется "указатель на функцию", второе - "абстрактный класс без полей с данными". И они по-прежнему есть на уровне языка.

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

#10
18:05, 20 мая 2020

AInsolence
>В целом движок благодарный, но надо привыкнуть, приучает кодить внимательно. После пары ошибок с nullptr или банальной ошибки на единицу в циклах, и последующими вылетами и пересборками движка, становишься осторожнее)) и дотошнее в коде.
Ходят упорные слухи, что с C++11 можно не использовать циклы с индексами, а итерироваться по элементам.

pahaa
>Первое называется "указатель на функцию"
Указатель на функцию не тоже самое, что делегат. Указатель он и есть указатель, крашит программу, когда этого совсем не ожидаешь.

>второе - "абстрактный класс без полей с данными"
В C++ можно и по другому реализовывать интерфейс.

>Больше пользы будет от участия в проекте, который уже двигается - там можно будет замучить вопросами тех самых - людей с опытом в нужной технологии.
Отличная идея, осталось найти этих людей с опытом, готовых отвечать на вопросы.

#11
18:59, 20 мая 2020

samrrr
> pahaa
> > первое называется "указатель на функцию"
> Указатель на функцию не тоже самое, что делегат.
+
Возможно я не точно выразился. Скорее я имел ввиду под делегатом "контейнер указателей на функции" в том виде, в котором он присутствует в UE4 (DECLARE_DELEGATE). И в целом я к тому, что было бы приятно конечно иметь некоторые удобные вещи в том виде, в котором они предоставлены в C#, нисколько не умаляя достоинств C++, моего самого любимого инструмента.

samrrr
> Ходят упорные слухи, что с C++11 можно не использовать циклы с индексами, а
> итерироваться по элементам.
Слухи-таки верны)) Просто иногда бывает нужно пробежаться по определённым элементам, например в конце списка, а не по всей коллекции, и сидя ночью с красными глазами и кипящим мозгом, одна из популярнейших ошибок может пробраться в ваш код)

#12
19:09, 20 мая 2020

Давным давно придумали такой тип отношений, называется учитель и ученик. Если сам вникать будешь Х дней, то в зависимости от качества учителя времени может уйти уже Х/Y где Y - сила учителя в совокупности с его умением донести информацию максимально быстро и понятно для усвоения. Без учителя все движется медленно и туго, слишком много тратится времени. Если живого опытного учителя найти невозможно то рекомендую купить хотя бы курсы на udemy.com, например от Тома Лумана (английский язык), это вас продвинет вперед очень быстро, настолько, что дальнейшее обучение будет идти еще легче и так далее, пока вы не осознаете что сами способны довольно быстро разбираться в возникших вопросах и осложнениях.

#13
19:21, 20 мая 2020

В целом, по поводу вопроса, изучать вместе или не изучать, ИМХО дело субъективное. С одной стороны, безусловно, я согласен с pahaa, что новички в чем-то могут обмениваться не очень качественным опытом, и это может навредить. С другой стороны, топикстартер пишет:

qGrin
> недавно начал, но как я надеюсь имеет опыт кодинга

И это уже подразумевает, что он приглашает к обсуждению людей с определенными навыками в программировании. А по моему опыту, если человек открыт к новому, несмотря на свой опыт, от такого общения все будут в плюсе. Порой глаз замыливается, и в общении открывается иной взгляд на вещи. Мы всегда в чем-то новички.

Готов поучаствовать в обсуждении UE4, может кому-то подсказать, и точно самому поучиться. В ru сегменте информация по UE4 точно не будет лишней))

#14
21:43, 20 мая 2020

samrrr
> Указатель он и есть указатель, крашит программу, когда этого совсем не ожидаешь
В до-диез всё ровно то же самое.

System.Action myAwesomeDelegate = delegate { };
...
myAwesomeDelegate = null;
...
myAwesomeDelegate(); // da-bum-tssss!
Единственное отличие, как уже было упомянуто AInsolence, что в до-диез это ещё и агрегатор (контейнер).
Но это так, к слову. Посыл был вообще не в этом.
Страницы: 1 2 3 4 Следующая »
ПроектыФорумСобираю команду