Page 2 of 3

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

Posted: Tue Sep 17, 2013 3:55 pm
by SoUrcerer
Я бы сказал, что утверждение не очень верное, потому что PNG можно хорошо оптимизировать через pngcrush, а RAW - не очень.

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

Posted: Tue Sep 17, 2013 7:00 pm
by yogev_ezra
SoUrcerer wrote:Я бы сказал, что утверждение не очень верное, потому что PNG можно хорошо оптимизировать через pngcrush, а RAW - не очень.
Leency, вероятно, хотел сказать, что авто-сборка принудительно сжимает все программы KPACK. А, как известно, хорошо уплотнённые файлы (например, PNG) после сжатия могут становиться даже больше, чем до сжатия. Для примера, попробуйте сжать несколько фотографий.

Поэтому, (ASM+RAW)->KPACK может в результате занимать места меньше, чем (ASM+PNG+LoadPNG)->KPACK.
Хотя отдельно (ASM+RAW) занимает больше, чем (ASM+PNG).

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

Posted: Tue Sep 17, 2013 7:53 pm
by Mario_r4
yogev_ezra wrote:Поэтому, (ASM+RAW)->KPACK может в результате занимать места меньше, чем (ASM+PNG+LoadPNG)->KPACK.
А зачем компилировать в бинарник сам PNG файл? Его нужно просто положить рядом и загружать. Не нужно упаковывать упакованное.

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

Posted: Tue Sep 17, 2013 10:11 pm
by segr
Попробовал сжать KPACK'ом то что есть, получил бинарник 4 кб вместо 12 кб. Тогда, действительно, не нужно сжатых изображений, просто бинарник упаковывать. А я велосипед изобретал)

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

Posted: Tue Sep 17, 2013 10:45 pm
by Mario_r4
segr wrote:А я велосипед изобретал)
Любое знание и любой опыт на первый взгляд не нужные в текущий момент обязательно бывают нужны в будущем.

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

Posted: Wed Sep 18, 2013 3:26 pm
by Serge
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

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

Posted: Wed Sep 18, 2013 8:12 pm
by segr
Mario_r4 wrote:Любое знание и любой опыт на первый взгляд не нужные в текущий момент обязательно бывают нужны в будущем.
Абсолютно согласен. Я просто иронизировал.

Serge, спасибо за ссылки, изучаю

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

Posted: Sun Sep 22, 2013 7:23 pm
by Leency
Игрушка зачётная. Чувствуется, что сделана с душой :)

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

Posted: Sun Sep 29, 2013 5:21 pm
by segr
Идея давно была, но руки не доходили, а тут колибри увидел...)

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

Микшер писал только под 16-битные 2-канальные сэмплы, поэтому размер звуковых файлов довольно большой.

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

Posted: Sun Sep 29, 2013 10:38 pm
by Mario_r4
Все замечательно, но вот взрывы бомб по краям экрана приводят к тому, что край окна затирается синим цветом.
А почему не использовать моно семплы? Для таких игр стерео уже роскошь. :-)

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

Posted: Sun Sep 29, 2013 10:42 pm
by Serge
Отлично всё получилось !
Есть ещё предложение сделать позиционирование звука. В зависимости от положения источника по горизонтали ослаблять левый или правый канал.
segr А есть семплы с большей частотой ? 24 КГц будет оптимально.
Mario_r4
Стерео лучше. И чем качественнее, тем лучше.

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

Posted: Mon Sep 30, 2013 12:08 am
by Leency
Вылет игры, если data-файл найден, но звук не работает (Hardware not found)
Звуки зачётные.

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

Posted: Mon Sep 30, 2013 7:25 am
by segr
Mario_r4 wrote:край окна затирается синим цветом.
Это не только от бомб, но и от любого спрайта, который уходит за границы. До сих пор откладывал этот косяк. Думаю достаточно будет каждый раз перерисовывать рамку окна.

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

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

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

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

Posted: Mon Sep 30, 2013 9:57 am
by Leency
Можно без mp3 - просто запаковать ресурсы kpack-ом :) и распаковывать в памяти во время загрузки. Для этого вроде бы есть библиотека. Пусть кто-то знающий расскажет.

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

Posted: Mon Sep 30, 2013 10:16 am
by segr
kpack-ом пробовал, сжатие не очень (процентов на 30 размер уменьшился), звук обычными алгоритмами упаковки плохо сжимается. а mp3 - самое то, размер в разы уменьшится