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

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

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

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

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

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

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

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

Так пометь просто для сборщика мусора чтоб он удалил из памяти твой массив при первой итерации.
В общем попробуй вот так, посмотри что по скорости:
Синтаксис:
Используется csharp
GC.Collect(0, GCCollectionMode.Optimized);
GC.WaitForPendingFinalizers();

Майнкрафт не один год существовал, сначала да делали пару энтузиастов по фану, да может они не супер прогеры, но точно не моего уровня и их было двое, да и игра на альфа версии не выглядела впечатляющей и мешы там были проще и прорисовка максимальная намного меньше высота чанка была в 2 раза меньше, потом уже пошли гигансткие деньги фигли не сделать идеально.
И да с твоим способом скорость только чуть чуть вырастает незначительно
Последний раз редактировалось NAGIBATOR228pacan 15 апр 2019, 12:30, всего редактировалось 1 раз.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

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

Сообщение Jarico 15 апр 2019, 12:28

Чувак! Не жалуйся на C#, если уж не можешь на нём писать пиши на C++ и выкладывай на http://govnokod.ru/
Github: _https://github.com/redheadgektor
Discord: Конь! Чаю!#9382 (сижу редко)
YouTube: _https://www.youtube.com/channel/UCPQ04Xpbbw2uGc1gsZtO3HQ
Telegram: _https://t.me/redheadgektor
Аватара пользователя
Jarico
Адепт
 
Сообщения: 1084
Зарегистрирован: 06 янв 2019, 17:37
Откуда: 0xDEAD
Skype: none
  • Сайт

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

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

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

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

Максимальная длина может быть хз какой мне тяжело это посчитать это раз, и как перезаписать массив? Resize пробовал та же проблема
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

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

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

Максимальная длина может быть хз какой мне тяжело это посчитать

Ты не знаешь какая длина массива тебе нужна? Что за бред? А как ты его пересоздаешь не зная длины?
Синтаксис:
Используется csharp
int l;
l = random(100, 999); // Вот тебе новая длина

и как перезаписать массив? Resize пробовал та же проблема

Перезаписать я имел ввиду перезаполнить, то есть старые значения заменить на новые и установить новую длину, а потом делать ним то что надо. Вообще, хватит демагогии, давай показывай код уже.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

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

Сообщение Cr0c 15 апр 2019, 13:04

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

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

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

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

Я уже 10 раз об этом написал если что, а ты давай скажи что мне надо сделать чтобы все нормально работало <...> не можете помочь решить элементарный вопрос, который на c++ решается одной строчкой, как мне затереть старый массив?

Проблема в неправильном выборе решения.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

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

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

1max1 писал(а):
Максимальная длина может быть хз какой мне тяжело это посчитать

Ты не знаешь какая длина массива тебе нужна? Что за бред? А как ты его пересоздаешь не зная длины?
Синтаксис:
Используется csharp
int l;
l = random(100, 999); // Вот тебе новая длина

и как перезаписать массив? Resize пробовал та же проблема

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

В плане максимальная возможную длину, пересоздаю я так, получаю длины списков из плагина и на их основе пересоздаю массивы. И как это перезаполнить и изменить длину? Как можно изменить длину массива вот это мне интересно, вроде есть функция resize, но если её использовать тоже память не затирается
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

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

Сообщение Friend123 15 апр 2019, 13:11

Ну если товаристч хочет скорости, то писать нужно даже не на C++, а уже сразу на Ассемблере. Вот где голову сломает окончательно.
Аватара пользователя
Friend123
Старожил
 
Сообщения: 701
Зарегистрирован: 26 фев 2012, 22:12
Откуда: Тверь
  • ICQ

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

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

Cr0c писал(а):Проблема в неправильном выборе решения.

Да нет еще никакого решения даже, решение да неправильное, вообще это глупость с этими пересозданиями когда есть списки с которыми проблем вроде бы нет, ну я на них и остановился, пускай в плагине только мир гененрируется, а меш строится пускай на c#, все равно скорее всего все эти пересоздания массивов и переводы списков в массив все равно компенсируют преимущество в производительности, пока вроде все работает более менее и дальнейшие лаги торможения будут зависеть только от генерации шума которую там надо дополнять еще
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

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

Сообщение Cr0c 15 апр 2019, 13:18

NAGIBATOR228pacan писал(а):
Cr0c писал(а):Проблема в неправильном выборе решения.

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

Раз есть алгоритм, который срёт в память - значит есть работающий код, что и есть решение.
Задача неизвестна, чтобы выбрать правильное решение.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

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

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

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

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

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

Cr0c писал(а):
NAGIBATOR228pacan писал(а):
Cr0c писал(а):Проблема в неправильном выборе решения.

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

Раз есть алгоритм, который срёт в память - значит есть работающий код, что и есть решение.
Задача неизвестна, чтобы выбрать правильное решение.

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

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

Сообщение AlcogGMS 15 апр 2019, 13:30

NAGIBATOR228pacan писал(а):Проблема в скорости, c++ быстрее, а мне важна скорость, говорю же перекинул шум на c++ и уже в два раза быстрее стало считаться, да конечно может и шум который я нашел для c++ быстрее сам по себе, но в любом случае c# где-то на 10-80% более медленный чем c++, да конечно кто-то скажет что многое зависит от рук, но и даже говнокод на c++ будет работать быстрее


1) Разница в скорости сильно преувеличена, я бы сказал 2-5 % максимум, с умелыми руками + unsafe разницу можно свести к 1-2 %, лично я экспериментирую с этим довольно часто.
2) Говнокод он и в с++ говнокод, и на ассемблере c кривыми руками можно сделать в разы медленней чем на #
3) Вся ваша проблема с памятью заключается не в "медленной" скорости #, а в том что вы не умеете правильно его использовать
AlcogGMS
UNIт
 
Сообщения: 50
Зарегистрирован: 11 янв 2019, 21:57

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

Сообщение Cr0c 15 апр 2019, 13:36

NAGIBATOR228pacan писал(а):На первой страницt есть пример того что срет в память мне надо вот этого избежать и к тому же чтобы это было быстро

Примеров насрать в память можно много привести. Задача неизвестна, значит выбор правильного решения невозможен.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

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

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

AlcogGMS писал(а):
NAGIBATOR228pacan писал(а):Проблема в скорости, c++ быстрее, а мне важна скорость, говорю же перекинул шум на c++ и уже в два раза быстрее стало считаться, да конечно может и шум который я нашел для c++ быстрее сам по себе, но в любом случае c# где-то на 10-80% более медленный чем c++, да конечно кто-то скажет что многое зависит от рук, но и даже говнокод на c++ будет работать быстрее


1) Разница в скорости сильно преувеличена, я бы сказал 2-5 % максимум, с умелыми руками + unsafe разницу можно свести к 1-2 %, лично я экспериментирую с этим довольно часто.
2) Говнокод он и в с++ говнокод, и на ассемблере c кривыми руками можно сделать в разы медленней чем на #
3) Вся ваша проблема с памятью заключается не в "медленной" скорости #, а в том что вы не умеете правильно его использовать

1) Ну статьи на хабре говорят что разница в 10-80% и тесты проведенные там это тоже подтверждают, на гайде по плагинам был тест где массив 10000x10000 на c++ плагине заполнялся в 5!!! раз быстрее чем в unity, с моим шумом на c++ все считается минимум в 2 раза быстрее(даже больше это только по времени в 2 раза быстрее, а там не только же шум все тратит) меня тут переубедить будет сложно.
3) Да можно быть супер мастером экспертом и сделать и на c# быстро, только супер мастер эксперт на c++ это сделает еще быстрее
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

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

Сообщение Dewa1s 15 апр 2019, 13:40

NAGIBATOR228pacan писал(а):Что за бред вообще тогда где игровые движки на c# или java, почему на них никто не делает?
Я не знаю каким это образом шейдер влияет на скорость, но это так, я предполагаю что более продвинутый шейдер тормозит гпу и он медленнее устанавливает новый массив вершин и треугольников, меш строится в реалтайме и в корутине если что, сейчас он строит 1024 мешей за 8 секунд, и за 6 если врубить анлит шейдер.

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

Нету там мешей с сотнями тысяч вершин, каждый чанк отрисовывает только видимую поверхность, плюс плоскости рядом стоящих кубов объединяются
https://0fps.net/2012/06/30/meshing-in- ... raft-game/
Говорю же, с неправильным подходом и С++ захлебнется, ты упираешься в свои алгоритмы, а не в производительность платформы
Аватара пользователя
Dewa1s
Старожил
 
Сообщения: 564
Зарегистрирован: 26 дек 2011, 02:12

Пред.След.

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

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

Сейчас этот форум просматривают: GoGo.Ru [Bot] и гости: 10