viv
Динамический массив юнитов на карте, например, ты как реализуешь?
viv
>Вы же игры пишете
So what?
В "играх" активно использую контейнеры: std::vector, std::map, std::string. Без stl лично мне жить было бы тяжко.
viv
> Особенно всякие мапы и хеши, очереди, строки и другой говномусор больного мозга. Вы же игры пишете
У меня map в ResourceManager'е используется.
NightmareZ
Нахера мне динмаический массив юнитов. Я юнитов еще на этапе компиляции посчитать могу и сверху ограничить.
San
Игры требовательны к производительности. Перечисленные тобой контейнеры живут на куче маллоков в кривых руках, и не кривыми исправить этот недостаток нельзя полностью
Nighthunter
Нафик вообще нужен твой ресурс менеджер?
Любой мэп в игре — скорей всего, ошибка проектирования. Ресурс менеджеры тем более.
viv
Есть аллокаторы. Вообще, стл штука очень гибкая и конфигурируемая. Опять же, не буду говорить за других, у меня пока что из-за стл никаких проблем с перфомансом не было. Профайлер, кстати, ругался как раз на самописные велосипеды :)
Единственно, могу предположить, что стл может оказаться боттлнеком в игрушках под мобильники и pocketPC. Да и то вряд ли.
cppguru
Обоснуйте (с) :)
viv
>Нахера мне динмаический массив юнитов. Я юнитов еще на этапе компиляции посчитать могу и сверху ограничить.
Из-за таких как ты я не мог больше двухсот юнитов в старкрафте создать и шестидесяти тысяч в казаках.
San
Как раз аллокаторы в STL через задницу спроектированы и прилеплены как бантик сбоку. В родном стандарте даже узаконеный хак ввиде rebind висит, allocate выделяет на size байт а size * (sizeof(T) байт и т.д.
И великолепные аллокаторы не отменяют того факта, что тотже map на каждый чих маллок зовет
viv
Я к тому, что аллокаторы можно напейсать самому и полностью контролировать процесс. Например взять с кучи сразу много памяти и реюзать ее. Никаких маллоков.
San
А когда ты выйдешь за пределы своей взятой памяти? Возьмешь еше больше памяти, скопируешь, пофиксишь поинтеры, освободишь старую? Или просто вообще засрешь и задефрагментируешь весь хип?
NightmareZ
Из-за таких, как ты, игры грузятся по пять минут.
San
Приведи пример, где мапа необходима и её нельзя устранить более аккуратным дизайном, и я предложу альтернативное решение.
Ну обычно - в мапах хранится соответствие неких строковых имён каким-то пачкам байт. И по этим именам радостно делается поиск. Отсюда вопрос, почему бы не делать это где-то в тулзе и в коде прошивать сразу адреса этих структур вместо строковых имён?
San
Ты кстати вообще писал эти волщебные аллокаторы?
cppguru
Для прикола спроси где ему std::string нужен. Еще веселее, чем мапа
cppguru
>Из-за таких, как ты, игры грузятся по пять минут.
Лучше подожать пять минут, чем обламаться в игре на самом интересном месте.
NightmareZ
За такое QA отсылает. Не жить тебе на консолях..
Тема в архиве.
Тема закрыта.