игра "приземление"

Entertainment for 5 minutes, hours, days
  • SoUrcerer wrote:Я бы сказал, что утверждение не очень верное, потому что PNG можно хорошо оптимизировать через pngcrush, а RAW - не очень.
    Leency, вероятно, хотел сказать, что авто-сборка принудительно сжимает все программы KPACK. А, как известно, хорошо уплотнённые файлы (например, PNG) после сжатия могут становиться даже больше, чем до сжатия. Для примера, попробуйте сжать несколько фотографий.

    Поэтому, (ASM+RAW)->KPACK может в результате занимать места меньше, чем (ASM+PNG+LoadPNG)->KPACK.
    Хотя отдельно (ASM+RAW) занимает больше, чем (ASM+PNG).
  • yogev_ezra wrote:Поэтому, (ASM+RAW)->KPACK может в результате занимать места меньше, чем (ASM+PNG+LoadPNG)->KPACK.
    А зачем компилировать в бинарник сам PNG файл? Его нужно просто положить рядом и загружать. Не нужно упаковывать упакованное.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Попробовал сжать KPACK'ом то что есть, получил бинарник 4 кб вместо 12 кб. Тогда, действительно, не нужно сжатых изображений, просто бинарник упаковывать. А я велосипед изобретал)
  • segr wrote:А я велосипед изобретал)
    Любое знание и любой опыт на первый взгляд не нужные в текущий момент обязательно бывают нужны в будущем.
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • segr
    Особых сложностей со звуком нет, но микшировать семплы лучше самому.
    Для примера стоит посмотреть исходники doom http://websvn.kolibrios.org/filedetails ... Fi_sound.c
    http://websvn.kolibrios.org/filedetails ... Fs_sound.c
    void S_Init() инициализация звуковой системы.
    void sound_proc(void) поток, в котором работает микшер.
    Когда происходит событие, Doom записывает адреса начала и конца семплов в один из свободных массивов (channels)
    // The channel data pointers, start and end.
    unsigned char* channels[NUM_CHANNELS];
    unsigned char* channelsend[NUM_CHANNELS];
    void I_UpdateSound( void ) собственно микшер. Поочерёдно выбирает семплы каждого активного канала и микширует.

    API звуковой подсистемы http://websvn.kolibrios.org/listing.php ... 724a6c72f6
  • Mario_r4 wrote:Любое знание и любой опыт на первый взгляд не нужные в текущий момент обязательно бывают нужны в будущем.
    Абсолютно согласен. Я просто иронизировал.

    Serge, спасибо за ссылки, изучаю
  • Игрушка зачётная. Чувствуется, что сделана с душой :)
    Из хаоса в космос
  • Идея давно была, но руки не доходили, а тут колибри увидел...)

    Разобрался со звуком, вот результат

    Микшер писал только под 16-битные 2-канальные сэмплы, поэтому размер звуковых файлов довольно большой.
    Attachments
    src.zip (509.15 KiB)
    исходники
    Downloaded 300 times
    bomber_0.1.zip (487.23 KiB)
    игра
    Downloaded 298 times
  • Все замечательно, но вот взрывы бомб по краям экрана приводят к тому, что край окна затирается синим цветом.
    А почему не использовать моно семплы? Для таких игр стерео уже роскошь. :-)
    Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
  • Отлично всё получилось !
    Есть ещё предложение сделать позиционирование звука. В зависимости от положения источника по горизонтали ослаблять левый или правый канал.
    segr А есть семплы с большей частотой ? 24 КГц будет оптимально.
    Mario_r4
    Стерео лучше. И чем качественнее, тем лучше.
  • Вылет игры, если data-файл найден, но звук не работает (Hardware not found)
    Звуки зачётные.
    Из хаоса в космос
  • Mario_r4 wrote:край окна затирается синим цветом.
    Это не только от бомб, но и от любого спрайта, который уходит за границы. До сих пор откладывал этот косяк. Думаю достаточно будет каждый раз перерисовывать рамку окна.

    Согласен насчет качественных звуков, пробовал меньшее качество, как то не так звучит. Сэмплы есть качественные, все звуки с инета. Думаю имеет смысл упаковать звуки в mp3. Как читать mp3 пока не знаю. Управлять раздельно левым и правым каналом для каждого звука не сложно - сразу сделал это в микшере, сделать позиционирование возможно, но, мое мнение, сначала нужно звуки упаковать.

    Игра вылетает, скорей всего, при обращении к памяти по неинициализированному указателю. Косяк в коде. Буду смотреть.

    Кстати, почему работа со звуком сделана только через драйвер? И микшер каждый раз писать приходится заново? Может имеет смысл выделить функции работы со звуком в отдельную библиотеку в системе, и просто обращаться из приложения, что-то вроде: "создать микшер (столько то каналов)", "проиграть сэмпл (микшер, указатель на сэмпл)" и т.д. И кодеки сделать системные. Или сделано уже?
  • Можно без mp3 - просто запаковать ресурсы kpack-ом :) и распаковывать в памяти во время загрузки. Для этого вроде бы есть библиотека. Пусть кто-то знающий расскажет.
    Из хаоса в космос
  • kpack-ом пробовал, сжатие не очень (процентов на 30 размер уменьшился), звук обычными алгоритмами упаковки плохо сжимается. а mp3 - самое то, размер в разы уменьшится
  • Who is online

    Users browsing this forum: No registered users and 3 guests