Ассеты и линкер

Dec 20, 2007 20:23

Иногда создается ощущение, что то, как линкер работает - военная тайна ( Read more... )

pnl, -gamedev, widnwtwwg, -геймдев, язычники

Leave a comment

_winnie December 21 2007, 01:57:01 UTC
>Её в самом тупом виде реализовать ничуть не сложнее, чем сложную обычную
Я не согласный. hash_map - гораздо проще чем тонны кода в оффлайне.

ДУМАТЬ о том что бы всё сролось после СЛОЖНО!

Reply

_winnie December 21 2007, 03:26:47 UTC
Вот есть у нас D3DXCreateTextureFromFile, std::map, shared_ptr. "Текстурный менеджер" пишется меньше чем за час. Твои же мега-системы билда ассетов сначала продумываются днями, затем днями на white-board и на бумажках, затем пишется неделю в несколько пар рук, затем ещё несколько месяцев находим редкие баги и забытые ассерты. Как можно сложное называть простым - я не понимаю. Разумеется, у KISS решения куча недостатков, но его нельзя нельзя назвать "таким же простым".

Reply

_winnie December 21 2007, 03:42:20 UTC
А потом к тебе приходят, и спрашивают, а как загрузить двумерный массив

char *characters[3] = { "cat", "dot", "mouse" };
for (int i = 0; i < ARRAY_SIZE(characters); ++i)
for (int j = 0; j < ANIMATION_MAX; ++j)
... = LoadTexture("animations/%s_%02d", characters[i], j);

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

Reply

virtul December 21 2007, 08:29:36 UTC
Думаеццо, что на консолях по другому не взлетит. Да и крупном писишном стоит имхо заморочиться на нечто подобное.

Reply

aruslan December 21 2007, 09:06:52 UTC
Взлететь-то взлетит, к сожалению.
Если ассертов понаставить, сделать руками кэширующие фиберы и с бубном потанцевать.

Просто вот эта пластическая хирургия - она не нужна совсем.
Проще написать то же самое - но дешевле и яснее.

Reply

virtul December 21 2007, 09:20:06 UTC
>Если ассертов понаставить, сделать руками кэширующие фиберы и с бубном >потанцевать.

Ну это из серии "а давайте [пока] делать игровые объекты в хмльках". Знаем проходили.

Reply

aruslan December 21 2007, 09:32:22 UTC
Вот через это и.

Reply

_winnie December 21 2007, 11:51:11 UTC
Но зато в простой схеме, которая потом становится сложней, каждый шаг следующий шаг очевиден.

1) Грузим в игровом цикле. После десяти картинок - FPS никакой.
2) Грузим перед игровым циклом. Скорость загрузки - в три раза больше, чем хочется.
3) hash_map. Тонем в сиках.
4) Выдаем пользователю не текстуру, а пустышку-прокси, которую грузим потом когда удобней. Менеджер мержит и сортирует запросы, что бы читать по порядку. Барахтаемся в сиках.
5) Profile Guided Optimization. Пишем скрипты, который смотрит что когда игра грузит, и под это переставляет файлы.
7) Тестеры часто жалуются на assertion failed на недостающий файл. Пишем regexp, который по коду находит использующиеся текстуры, с 5% LoadTexture которые не подходят под regexp разбираемся отдельно.
7) Много лишних неиспользующихся текстур, проблема решается как в предыдущем пункте.

В результате получается гораздо сложней чем линкер, но 1) можно вовремя остановиться 2) 7 по 0.2 может быть легче чем 1.0 одним куском.

Reply

_winnie December 21 2007, 11:53:19 UTC
> Скорость загрузки - в три раза больше, чем хочется
*Время загрузки - в три раза больше, чем хочется
*Скорость загрузки - в три раза меньше, чем хочется

Reply

_winnie December 21 2007, 22:21:04 UTC
Читаю The way that the system developed is perfectly logical. It makes sense., и оно мне напомнило этот пост :)

Reply

aruslan December 21 2007, 09:02:07 UTC
Если что - ты говоришь странное.
Я строго за тупую загрузку ассетов говорю.
Без всяких этих энтелегентских шалостей.

LoadTexture будет работать вполне себе замечательно.

Reply

aruslan December 21 2007, 09:04:10 UTC
Опять ты говоришь странное.
Я не предлагаю мегаунификации или там спецификации.
Я наоборот - предлагаю простые тупые решения.

Или уж тогда не делать вид что решение есть и тупо юзать map+ptr, да.

Reply

aruslan December 21 2007, 08:59:04 UTC
Дык я ж не против hashmap! Это как раз из серии "лучше уж не делать совсем" - быстро дешево и работает!

Я против когда делают много всякого - и оно работает плохо.

Reply


Leave a comment

Up