Страница 4 из 7

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

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

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

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

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

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

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

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

СообщениеДобавлено: 15 апр 2019, 12:28
Jarico
Чувак! Не жалуйся на C#, если уж не можешь на нём писать пиши на C++ и выкладывай на http://govnokod.ru/

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

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

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

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

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

СообщениеДобавлено: 15 апр 2019, 12:57
1max1
Максимальная длина может быть хз какой мне тяжело это посчитать

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

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

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

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

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

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

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

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

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

Проблема в неправильном выборе решения.

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

СообщениеДобавлено: 15 апр 2019, 13:10
NAGIBATOR228pacan
1max1 писал(а):
Максимальная длина может быть хз какой мне тяжело это посчитать

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

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

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

В плане максимальная возможную длину, пересоздаю я так, получаю длины списков из плагина и на их основе пересоздаю массивы. И как это перезаполнить и изменить длину? Как можно изменить длину массива вот это мне интересно, вроде есть функция resize, но если её использовать тоже память не затирается

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

СообщениеДобавлено: 15 апр 2019, 13:11
Friend123
Ну если товаристч хочет скорости, то писать нужно даже не на C++, а уже сразу на Ассемблере. Вот где голову сломает окончательно.

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

СообщениеДобавлено: 15 апр 2019, 13:16
NAGIBATOR228pacan
Cr0c писал(а):Проблема в неправильном выборе решения.

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

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

СообщениеДобавлено: 15 апр 2019, 13:18
Cr0c
NAGIBATOR228pacan писал(а):
Cr0c писал(а):Проблема в неправильном выборе решения.

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

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

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

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

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

СообщениеДобавлено: 15 апр 2019, 13:21
NAGIBATOR228pacan
Cr0c писал(а):
NAGIBATOR228pacan писал(а):
Cr0c писал(а):Проблема в неправильном выборе решения.

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

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

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

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

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


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

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

СообщениеДобавлено: 15 апр 2019, 13:36
Cr0c
NAGIBATOR228pacan писал(а):На первой страницt есть пример того что срет в память мне надо вот этого избежать и к тому же чтобы это было быстро

Примеров насрать в память можно много привести. Задача неизвестна, значит выбор правильного решения невозможен.

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

СообщениеДобавлено: 15 апр 2019, 13:37
NAGIBATOR228pacan
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++ это сделает еще быстрее

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

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

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

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