Войти
ФлеймФорумПрограммирование

Боттелнек загрузки уровня карты миссии (4 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 13 4 5 628 Следующая »
#45
14:56, 23 мар. 2021

Delfigamer
> малые куски не вырезают из общей кучи, а берут из отдельных пулов
в вендовом HeapAlloc через который работают malloc и new это появилось то-ли в висте то-ли в семерке


#46
14:57, 23 мар. 2021

Xunter
> Как ты в контейнеры stl прокинешь разные хипы для объектов уровня и объектов
> игры, которые живут дольше?

шошо? шо там живёт дольше уровня?

> > > Модерам можно дать как раз инструмент сборки бандла, если надо.
> > ты с какими редакторами работал ?
> Сборка бандлов должна работать как тул для командной строки.

спроси Валеру как он работал с UE4 в Рикоре и сколько занимало время билда в шиппинг версии

#47
(Правка: 14:59) 14:58, 23 мар. 2021

Xunter
> а так - давай лучше у Долгова спросим как там в MoW всё было хорошо или плохо?

с удовольствием - он правда ярый конзольшик

Xunter
> проблема скорости загрузки была не в них.

ну да, парсить 100-500 xml каждый раз было накладно

#48
15:02, 23 мар. 2021

return [](){};
> в вендовом HeapAlloc через который работают malloc и new это появилось то-ли в
> висте то-ли в семерке
В dlmalloc вроде было, но не спасало, и на 32-бит висте тоже.
Малые объекты у нас были отнюдь не все "квадратно-гнездовые".
Да собственно строчки даже те же.

#49
(Правка: 15:07) 15:05, 23 мар. 2021

return [](){};
> в вендовом HeapAlloc через который работают malloc и new это появилось то-ли в
> висте то-ли в семерке
Опять же, мои сведения расходятся - по ним, практически все стдлибы держат свой собственный хип, и к системе обращаются только за большими кусками через VirtualAlloc. Там даже предупреждения везде висят, что если ты линкуешь стдлибу статически - то она обязательно у тебя окажется в нескольких экземплярах (включая и оригинальный динамический), так что будь готов ловить приветы от несовместимых malloc/free из разных подмодулей, в том числе и через аллоцирующие STL-классы.
Или это чисто msvc-шная либа так доверяет системе?

#50
15:07, 23 мар. 2021

innuendo
> ну да, парсить 100-500 xml каждый раз было накладно
и это тоже, процентов на 20. С заменой на pugixml стало процента на 3.
Но там в другом было несчастье, как раз с мапами и строчками.

> спроси Валеру как он работал с UE4
Да видел я тот UE4, мне он с точки зрения "орхетектуры" не сильно интересен.
bitsquid был лучше.

> шошо? шо там живёт дольше уровня?
никогда такого не видел? ну а как-же твоя "практика"? Сомнения возникают.

#51
(Правка: 15:12) 15:09, 23 мар. 2021

Xunter
> > спроси Валеру как он работал с UE4
> Да видел я тот UE4, мне он с точки зрения "орхетектуры" не сильно интересен.
> bitsquid был лучше.

ну да - сколько проектов вышло там и там ?

ты упорно игнорируешь удобство работы, да?

> > шошо? шо там живёт дольше уровня?
> никогда такого не видел? ну а как-же твоя "практика"? Сомнения возникают.

расскажи кто живёт между миссиями

#52
(Правка: 15:15) 15:13, 23 мар. 2021

innuendo
> ну да - сколько проекто вышло там и там ?
А это тут при чём?
Самая лучшая машина - это лада гранта? или солярис?
Да даже unity с точки зрения орхетектуры сейчас лучше.
На нём проектов меньше, чем на UE4?

> расскажи кто живёт между миссиями
ты это серьёзно? может кроме графики что-то пописать надо?

#53
15:32, 23 мар. 2021

Delfigamer
На винде malloc и new - минимальная обертка над HeapAlloc, можешь в сорцах crt посмотреть

#54
15:36, 23 мар. 2021

Xunter
> > ну да - сколько проекто вышло там и там ?
> А это тут при чём?

да ни при чём, лол, какая-то местная поделка недоделка и движок дефакто стандарт :)

> > расскажи кто живёт между миссиями
> ты это серьёзно? может кроме графики что-то пописать надо?

так расскажешь что там между миссиями ?

#55
15:37, 23 мар. 2021

return [](){};

тебе сколько нужно времени чтобы написать свой аллокатор под нужды?

#56
15:47, 23 мар. 2021

Xunter
> и это тоже, процентов на 20. С заменой на pugixml стало процента на 3.

интересно - и как там парсинг происходит? прям совсем без аллокаций ?

#57
15:58, 23 мар. 2021

innuendo
А почему вы спрашиваете?

Delfigamer
Специально для тебя, имплементация malloc из ucrt, new тупо зовет malloc

// This function implements the logic of malloc().  It is called directly by the
// malloc() function in the Release CRT and is called by the debug heap in the
// Debug CRT.
//
// This function must be marked noinline, otherwise malloc and
// _malloc_base will have identical COMDATs, and the linker will fold
// them when calling one from the CRT. This is necessary because malloc
// needs to support users patching in custom implementations.
extern "C" __declspec(noinline) _CRTRESTRICT void* __cdecl _malloc_base(size_t const size)
{
    // Ensure that the requested size is not too large:
    _VALIDATE_RETURN_NOEXC(_HEAP_MAXREQ >= size, ENOMEM, nullptr);

    // Ensure we request an allocation of at least one byte:
    size_t const actual_size = size == 0 ? 1 : size;

    for (;;)
    {
        void* const block = HeapAlloc(__acrt_heap, 0, actual_size);
        if (block)
            return block;

        // Otherwise, see if we need to call the new handler, and if so call it.
        // If the new handler fails, just return nullptr:
        if (_query_new_mode() == 0 || !_callnewh(actual_size))
        {
            errno = ENOMEM;
            return nullptr;
        }

        // The new handler was successful; try to allocate again...
    }
}
#58
(Правка: 24 мар. 2021, 1:35) 16:35, 23 мар. 2021

innuendo
> да ни при чём, лол, какая-то местная поделка недоделка
На нём как минимум Warhammer: Vermintide 1 & 2 сделаны и War of the Roses.
Распространённым не стал потому, что бесплатной/дешёвой версии для школоты не было, а  Autodesk его задушил после покупки.

> и движок дефакто стандарт :)
Ну если все твои познания ограничиваются "посмотри как в туториале UE4 сделано" или в огре/урхо,
то твоё мнение не интересно, т.к. лучше в документации и комьюнити тех движков почитать.
огр я смотрел примерно когда на этом форуме зарегался, ну ты понел сколько лет назад,
общался потом с людьми которые их на проектах использовали, и первый лид PT Boats я так понимаю в огр поглядывал - счастья это поверь никому не добавило,
урха - нечто с закосом под юнити апи, но в котором 100500 нюансов не учтены, есть и получше опенсорс решения если уж на то пошло.

> считай, что 80-90% было с старых компов с hdd и дохлого атлона 64 - это мой
> рабочий комп на проектах что были
Где реальные цифры? Что сколько грузилось, и сколько занимало непосредственно чтение с диска, с учетом и без учета seek.

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

Покажи как ты "хип возвращаешь в исходное состояние".
У тебя с уровнем все подсистемы целиком грохаются?
UI, рендер, логгер, таскменеджер - до какого уровня?
Где объекты этих подсистем живут когда ты каким-то образом "хип возвращаешь в исходное состояние"?

> тебе сколько нужно времени чтобы написать свой аллокатор под нужды?
И в самом деле - сколько тебе надо времени чтобы написать универсальный аллокатор?

Delfigamer
> практически все стдлибы держат свой собственный хип, и к системе обращаются
> только за большими кусками через VirtualAlloc
Тут речь как раз о том, что фрагментируется именно этот собственный хип,
допустим у нас как советует иннуэдно все строчки - std::string, в рантайме игровой hud создает их тысячами, есть прочая игровая логика, допустим с std::map и std::list, как любит иннуэндо, есть временные объекты, лямбды с захваченными контекстами, игровые события всякие и т.п., всё это усугубляется многопоточностью игровых подсистем.

#59
(Правка: 16:41) 16:41, 23 мар. 2021

Xunter
> > да ни при чём, лол, какая-то местная поделка недоделка и движок дефакто
> > стандарт :)
> Ну если все твои познания ограничиваются "посмотри как в туториале UE4 сделано"
> или в огре/урхо,
> то твоё мнение не интересно, т.к. лучше в документации и комьюнити тех движков
> почитать.

так даже и не читал доки тех движков

> > считай, что 80-90% было с старых компов с hdd и дохлого атлона 64 - это мой
> > рабочий комп на проектах что были
> Где реальные цифры? Что сколько грузилось, и сколько занимало непосредственно
> чтение с диска, с учетом и без учета seek.

как ты думаешь, у меня сейчас есть под рукой проект 10 летней давности ?

как там твои цифры с корабликов?

> Покажи как ты "хип возвращаешь в исходное состояние".
> У тебя с уровнем все подсистемы целиком грохаются?

вот мегалол, всё что наделали в текущий миссии нужно в следующей ?

> > тебе сколько нужно времени чтобы написать свой аллокатор под нужды?
> И в самом деле - сколько тебе надо времени чтобы написать универсальный
> аллокатор?

мелкий врунишка - зачем перевирать мои слова?

> допустим у нас как советует иннуэдно все строчки - std::string

ну и как у вас там жили строчки от парсинга xml ?

>в рантайме игровой hud создает их тысячами

это на корабликах так было?

Страницы: 13 4 5 628 Следующая »
ФлеймФорумПрограммирование