Прогрессбары в «маленьких играх»

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

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

Скажем «нет» прогрессбарам в казуальных играх!

  • IronPeter

    А какой объем ресурсов казуальной игрушки?

  • dDIMA

    Так а как надо грузить? В фоне пока пользователь разбирается с навигацией по главному меню?

  • Dyn

    Все ограничено размерами дистрибутива. Его стараются делать не больше 20 мб.

    Ну а в дистриб уж чем больше впихнуть тем лучше :)

  • IronPeter

    Ну просто если дистро 20 мегабайт, то он целиком зачитывается в память где-то за 0.2 секунды при слабой фрагментации файловой системы. И за 2 секунды при сильной.

  • DigiMind

    > Так а как надо грузить? В фоне пока пользователь разбирается с навигацией по главному меню?

    Why бы, как говорится, и не not?

  • Dyn

    2IronPeter
    Ну 20 мб это дистрибутив… то что скачивает казуал :)

    специально поинтересовался нашими цифрами:
    Дистрибутив чуть больше 20 мб, при установке увеличивается более чем в два раза.
    при этом, если загрузить все ресурсы в память сразу, занимает около гига
    В среднем по игре используется 100 – 200мб памяти

    Тут еще стоит учитывать, что у большого количества таргетов, не тот комп на котором играют в homm5 ;)

  • http://games.1c.ru CybeRUS

    А можно не показывать(не создавать) прогресс бар пока не прошло какое то время.
    Таким образом если ресурсы быстро загрузились, он не появится, а если ступор – пусть хоть что-то показывает

  • IronPeter

    >при установке увеличивается более чем в два раза

    А смысл? Если дистрибутив у тебя 20 мегов – то прямо на диске пользователя храни блоб размером 20 мегов. И exe файл. Блоб загружай целиком и сразу. Если понадобятся части – распаковывай. Если у тебя 200 мегов ( откуда гигабайт – я слабо понимаю. jpeg, скажем, слабо отличается от DXT + zlib ) памяти, то 20 можешь потратить на кеш?

  • Dyn

    Я долго пытался выяснить у нашего лид программера откуда берется гиг… :)

    Объяснения были не очень убедительные и сводились приблизительно к тому, что пожатая картинка с альфой занимает в сотни раз меньше (звучала цифра 500! О_о)…

    Я в наш код, к счастью для меня, не лезу. :)

  • http://-winnie.livejournal.com _winnie

    IronPeter:
    Можно долго не понимать, откуда в игрушках с количеством ресурсов в 20 мегабайт прогрессбар. Но вот он есть. Можешь скачать нямстеров и помедитировать на музыку при загрузке:) Можешь скачать маджонг и не медитировать на музыку при загрузке.

    Провел опыт. Есть 25 комиксов 1024×768, общим размером в 2 мегабайта. На их загрузку ушло 0.8 секунд на Q6600. Соответсвенно, если бы я грузил 10 мегабайт графики, то было бы 16 секунд на каком-нибудь селероне. Ботл-нек – в расжатии джепегов, которые жмут где-то в 20:1.

    Блобы, кеши… фу, сотни процентов, какие-то телодвижения с кодом. Влезание во внутренности какого-нибудь HGE или PopCap framework. Главное – не грузить то что не надо :]

    PS. Скачал нямстеров, так как Кранк говорил что они что-то там оптимизировали. Раньше они грузились 30 секунд в первой версии, сейчас 10. Но зато появился односекундный Loading при загрузке уровней.

  • http://-winnie.livejournal.com _winnie

    DDima
    >Так а как надо грузить?
    Например, блокирующим fread с последующим засовыванием в libjpeg, и локом d3d-текстуры. Тупо-тупо. Но если скажем паузу в 0.2 секунды перед новым игровым экраном никто не заметит, то эта же пауза умноженная в двадцать раз становится неприятной.

  • http://doc-allegator.livejournal.com Doc_A

    _winnie:
    Скачал нямстеров, так как Кранк говорил что они что-то там оптимизировали. Раньше они грузились 30 секунд в первой версии, сейчас 10. Но зато появился односекундный Loading при загрузке уровней.

    Интересно чем там пофиксили

  • IronPeter

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

  • lordmaze

    Честно таки да не совсем непонятно почему сразу нельзя загрузить в память ресурс пак особенно если он всего 20мб а потом делать с ним что хошь…

  • http://-winnie.livejournal.com _winnie

    lordmaze
    Почему нельзя? Можно, и даже нужно. Иначе потонем в операциях с файловой системой (грубо говоря, 0.02 секунды на один seek, в наших казуальных играх мелких спрайтов от 500 до 1500). Я пожалуй преувеличил в первом посте, что менеджмент вручную самых крупных файлов – это решит вообще все проблемы. Надо так или иначе объединять мелкие картинки.

  • shvez

    Doc_A:
    > Интересно чем там пофиксили

    Насколько я помню, обсуждали что надо грузить все сразу, а грузить только то что нужно.