C# заставляет гореть!

Общие вопросы о Unity3D

Re: C# заставляет гореть!

Сообщение Woolf 15 апр 2019, 01:59

чтобы заместо c++ додуматься сделать c# в движке для ИГР!?

Спасибо, я поржал.. Не знаю, какими надо быть фееричными даунами, чтобы в 2019 году в движке для игр использовать С++ для написания логики. Даже почитатели UE допетрили, что это фейл и ввели блупринты.


Чувак сделал статик, но не в курсе, что new[] создаёт новый массив, не убивая старый. Это уже показатель. Он даже не попытался переиспользовать массив, в конце концов

А это нормально. Это профессиональная деформация всех сипипишников. Именно поэтому, сипипишник не способен писать на других языках более высокого уровня и именно поэтому я никогда не брал на работу людей, в багаже у которых профессиональное владение С++. Ибо это верный маркер 100%го говнокода, на чем бы он не писал.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 05:53

Woolf писал(а):
чтобы заместо c++ додуматься сделать c# в движке для ИГР!?

Спасибо, я поржал.. Не знаю, какими надо быть фееричными даунами, чтобы в 2019 году в движке для игр использовать С++ для написания логики. Даже почитатели UE допетрили, что это фейл и ввели блупринты.


Чувак сделал статик, но не в курсе, что new[] создаёт новый массив, не убивая старый. Это уже показатель. Он даже не попытался переиспользовать массив, в конце концов

А это нормально. Это профессиональная деформация всех сипипишников. Именно поэтому, сипипишник не способен писать на других языках более высокого уровня и именно поэтому я никогда не брал на работу людей, в багаже у которых профессиональное владение С++. Ибо это верный маркер 100%го говнокода, на чем бы он не писал.

C# не для игр, смысл использовать язык который просто намного медленнее c++? Почему сам unity работает на c++, а не на c#? Да потому что это он намного быстрее то что нужно для игр, я уверен что c# в unity только потому что он намного проще для новичков и освоения чем c++ вот и все
Последний раз редактировалось NAGIBATOR228pacan 15 апр 2019, 05:54, всего редактировалось 1 раз.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 05:54

Cr0c писал(а):
NAGIBATOR228pacan писал(а):можно ли где-то подработать на unity не на серьезном проекте, без всякого устройства, я кароче в этом не эксперт абсолютно, потому что я нигде никогда еще не работал

NAGIBATOR228pacan писал(а):Я просто не понимаю какими надо быть аутистическими даунами чтобы заместо c++ додуматься сделать c# в движке для ИГР!?!?!??

seaman писал(а):Незнание инструмента и безапеляционные заявления заставляют гореть.

Чувак сделал статик, но не в курсе, что new[] создаёт новый массив, не убивая старый. Это уже показатель. Он даже не попытался переиспользовать массив, в конце концов. Но при этом - критикует ))
Может, он считает, что плюса - это "прям сразу" кроссплатформенный ЯП? :))

Я уже 10 раз об этом написал если что, а ты давай скажи что мне надо сделать чтобы все нормально работало, почему вы все такие гении комнатные с 10 летним стажем в программировании и не можете помочь решить элементарный вопрос, который на c++ решается одной строчкой, как мне затереть старый массив?
Последний раз редактировалось NAGIBATOR228pacan 15 апр 2019, 06:04, всего редактировалось 1 раз.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 06:00

Saltant писал(а):Мне вообще интересно чего там ТС такое мутит что средствами C# не реализуется, я пока вообще проблем ни каких с этим языком не нашел в плане функционала.

Проблема в скорости, c++ быстрее, а мне важна скорость, говорю же перекинул шум на c++ и уже в два раза быстрее стало считаться, да конечно может и шум который я нашел для c++ быстрее сам по себе, но в любом случае c# где-то на 10-80% более медленный чем c++, да конечно кто-то скажет что многое зависит от рук, но и даже говнокод на c++ будет работать быстрее
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение Dewa1s 15 апр 2019, 07:55

NAGIBATOR228pacan писал(а):C# не для игр, смысл использовать язык который просто намного медленнее c++? Почему сам unity работает на c++, а не на c#? Да потому что это он намного быстрее то что нужно для игр, я уверен что c# в unity только потому что он намного проще для новичков и освоения чем c++ вот и все

Крайнэнжин со всеми этими вашими крайзисами в качестве скриптового языка использует луа, недавно к нему прикрутили C#. Майнкрафт использует java, которая сопоставима с шарпом по скорости. Может таки проблема не в языке?
как мне затереть старый массив

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

Так ты не используешь его заново. Ты каждый раз пытаешься его грохнуть и создать новый массив другой длины, о каком "заново" идет речь-то? Каждый раз что в С++, что в С# ты будешь аллоцировать новый кусок памяти, просто в С# за ее очистку отвечает сборщик мусора.
Создай 1 раз массив максимально возможного размера и используй его. Зачем его очищать, если можно перезаписывать? Ну заведи переменную с размером массива, чтобы видеть края более мелких массивов внутри.
Аватара пользователя
Dewa1s
Старожил
 
Сообщения: 564
Зарегистрирован: 26 дек 2011, 02:12

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 08:13

Dewa1s писал(а):
NAGIBATOR228pacan писал(а):C# не для игр, смысл использовать язык который просто намного медленнее c++? Почему сам unity работает на c++, а не на c#? Да потому что это он намного быстрее то что нужно для игр, я уверен что c# в unity только потому что он намного проще для новичков и освоения чем c++ вот и все

Крайнэнжин со всеми этими вашими крайзисами в качестве скриптового языка использует луа, недавно к нему прикрутили C#. Майнкрафт использует java, которая сопоставима с шарпом по скорости. Может таки проблема не в языке?
как мне затереть старый массив

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

Так ты не используешь его заново. Ты каждый раз пытаешься его грохнуть и создать новый массив другой длины, о каком "заново" идет речь-то? Каждый раз что в С++, что в С# ты будешь аллоцировать новый кусок памяти, просто в С# за ее очистку отвечает сборщик мусора.
Создай 1 раз массив максимально возможного размера и используй его. Зачем его очищать, если можно перезаписывать? Ну заведи переменную с размером массива, чтобы видеть края более мелких массивов внутри.

Сам движок то все равно на c++ работает, самим то разработчикам крайзиса та какая разница их движок они имеют полный доступ и если им надо что-то под писать на c++ и например установить меш напрямую, в скрипте вызывая лишь функцию, они это запросто сделают, и к тому же luajit не сильно уступает C в скорости в отличии от c# или java. В unity же обычному пользователю добраться то исходного кода нельзя и установить меш можно только через скрипт на c#, в этом и моя проблема. Сколько помню на майнкрафт всегда гнали за то что его можно было сделать быстрее на других языках, к тому же майнкрафт разрабатывала студия опытных разработчиков миллионеров они что-то и могут придумать, но мне до них очень далеко, да и скорость генерации в майнкрафте не самая быстрая. Проблема конечно не только в языке, но и в нем тоже, смысл пытаться доказать обратное если в интернете есть куча тестов в которых иногда разница в производительности c# и c++ доходит до двух, а то и больше раз и всегда в пользу c++, большинство движков работают на c++ из-за скорости.
Подход действительно странный просто мне массив нужен был глобальный в скрипте, поэтому пришлось делать так, а создавать массив максимальной возможной длины вообще не варик потому что мне надо меш установить зачем ставить лишние вершины, а с треугольниками там тем более пойдет геморой
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение IDoNotExist 15 апр 2019, 09:27

NAGIBATOR228pacan писал(а):как мне затереть старый массив?

Хоспаде, да легко же, обнуляешь старый массив и вызываешь GC.Collect();
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 09:30

IDoNotExist писал(а):
NAGIBATOR228pacan писал(а):как мне затереть старый массив?

Хоспаде, да легко же, обнуляешь старый массив и вызываешь GC.Collect();

Еще одна только проблема от этого возникает, если вызывать этот GC.Collect то генерация моего меша займет 20 секунд заместо 8, я конечно решил уже свою проблему самым легким способом - забил, пофиг и 8 сек нормально, даже 6 если поставить анлит шейдер
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение IDoNotExist 15 апр 2019, 09:35

NAGIBATOR228pacan писал(а):Еще одна только проблема от этого возникает, если вызывать этот GC.Collect то генерация моего меша займет 20 секунд заместо 8

Здорово правда? Но главное же, что массив будет удалён.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 09:37

IDoNotExist писал(а):
NAGIBATOR228pacan писал(а):Еще одна только проблема от этого возникает, если вызывать этот GC.Collect то генерация моего меша займет 20 секунд заместо 8

Здорово правда? Но главное же, что массив будет удалён.

Удален не удален это я еще не проверял, но вот просто если вызывать сборщик в конце создания одного объекта то это очень сильно тормозит, а мне важна именно скорость генерации каждая секунда очень ценна
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение Saltant 15 апр 2019, 10:16

NAGIBATOR228pacan писал(а):майнкрафт разрабатывала студия опытных разработчиков миллионеров они что-то и могут придумать, но мне до них очень далеко...

Мы об одной игре "Minecraft" говорим или о разных? Игру разработали два человека параллельно работая на основной работе и уделяя свободное время разработке своей игры.
NAGIBATOR228pacan писал(а):
IDoNotExist писал(а):
NAGIBATOR228pacan писал(а):Еще одна только проблема от этого возникает, если вызывать этот GC.Collect то генерация моего меша займет 20 секунд заместо 8

Здорово правда? Но главное же, что массив будет удалён.

Удален не удален это я еще не проверял, но вот просто если вызывать сборщик в конце создания одного объекта то это очень сильно тормозит, а мне важна именно скорость генерации каждая секунда очень ценна

Так пометь просто для сборщика мусора чтоб он удалил из памяти твой массив при первой итерации.
В общем попробуй вот так, посмотри что по скорости:
Синтаксис:
Используется csharp
GC.Collect(0, GCCollectionMode.Optimized);
GC.WaitForPendingFinalizers();
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

Re: C# заставляет гореть!

Сообщение samana 15 апр 2019, 10:30

C# позволяет работать с памятью напрямую в unsafe режиме. Правда не знаю поддерживает ли эту фишку сам Unity. :-?
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: C# заставляет гореть!

Сообщение Dewa1s 15 апр 2019, 10:55

samana писал(а):C# позволяет работать с памятью напрямую в unsafe режиме. Правда не знаю поддерживает ли эту фишку сам Unity. :-?

поддерживает, я активно балуюсь с ней. А с 2018 вообще в настройках плеера появилась галочка "разрешить unsafe"
разница в производительности c# и c++ доходит до двух, а то и больше раз и всегда в пользу c++, большинство движков работают на c++ из-за скорости.

Я тебе страшную вещь сейчас скажу - разница в два раза не существенна для игровой логики, и единственный движок, в котором для этого стали использовать плюсы - это UE,и то там куча оговорок в виде блюпринтов и прикрученного V8 для js. С вероятностью процентов в 90 ты упираешься не в производительность языка, а в производительность алгоритма. И начать стоит с того, что постоянно динамически генерируемые меши на сотни тысяч вершин - такая себе идея, тут изначально что-то сомнительное происходит
даже 6 если поставить анлит шейдер

Вот тут сейчас не понял, каким образом, если у тебя якобы тормозит генерация меша, анлит шейдер помогает на 2 секунды ускорить? 2 секунды что, уходят на прогрузку теней?
Аватара пользователя
Dewa1s
Старожил
 
Сообщения: 564
Зарегистрирован: 26 дек 2011, 02:12

Re: C# заставляет гореть!

Сообщение 1max1 15 апр 2019, 11:51

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

В смысле? О каких лишних вершинах ты говоришь?
Создаешь массив один раз максимальной длины, которая тебе нужна.
Создаешь переменную int length; которая содержит текущую длину, которая должна быть (а не та, которая по факту).
Перезаписываешь массив если надо + устанавливаешь новую длину чтобы не заходило дальше, чем нужно.
Или я что-то не так понял?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 15 апр 2019, 12:20

Dewa1s писал(а):
samana писал(а):C# позволяет работать с памятью напрямую в unsafe режиме. Правда не знаю поддерживает ли эту фишку сам Unity. :-?

поддерживает, я активно балуюсь с ней. А с 2018 вообще в настройках плеера появилась галочка "разрешить unsafe"
разница в производительности c# и c++ доходит до двух, а то и больше раз и всегда в пользу c++, большинство движков работают на c++ из-за скорости.

Я тебе страшную вещь сейчас скажу - разница в два раза не существенна для игровой логики, и единственный движок, в котором для этого стали использовать плюсы - это UE,и то там куча оговорок в виде блюпринтов и прикрученного V8 для js. С вероятностью процентов в 90 ты упираешься не в производительность языка, а в производительность алгоритма. И начать стоит с того, что постоянно динамически генерируемые меши на сотни тысяч вершин - такая себе идея, тут изначально что-то сомнительное происходит
даже 6 если поставить анлит шейдер

Вот тут сейчас не понял, каким образом, если у тебя якобы тормозит генерация меша, анлит шейдер помогает на 2 секунды ускорить? 2 секунды что, уходят на прогрузку теней?

Понятное дело что от рук зависит куда больше, но просто объясни зачем ты пытаешься спорить там где и так уже все давным давно доказано, что c++ быстрее c# намного и в случае когда тебе просто надо заполнить массив рандомом никакие руки не помогут тебе это ускорить только язык, и на c++ это делается куда быстрее точнее там все делается куда быстрее, и да разница в два раза не существенна? Что за бред вообще тогда где игровые движки на c# или java, почему на них никто не делает?. Не такая себе идея, ближайший пример того что я хочу сделать, майнкрафт тысячи мешей с сотнями тысяч вершин спокойно работают.
Я не знаю каким это образом шейдер влияет на скорость, но это так, я предполагаю что более продвинутый шейдер тормозит гпу и он медленнее устанавливает новый массив вершин и треугольников, меш строится в реалтайме и в корутине если что, сейчас он строит 1024 мешей за 8 секунд, и за 6 если врубить анлит шейдер.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Пред.След.

Вернуться в Общие вопросы

Кто сейчас на конференции

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