#11
05 января 2007 в 18:04
Не понял вопрос, что главное - Мэй би патч или Мэй би отдельный?
#12
05 января 2007 в 18:13
патч очень важный!<br />я о том что получаестя он только для владельцев карт с нормальным опеал.<br /> и по этому или отдельный экзешник или кхм.. совмещение ориг опеал движка с твоим. я за первй вариант!)))))<br />я уже отчаливаю, мин 30 еще буду доступен по трубе, номер у тебя есть)
#13
06 января 2007 в 00:09
Алгоритм заработал. Файл EXE по старой ссылке, заменяет оный в поставке q2xp. Да, за функционирование EAX не отвечаю, я до него еще не добрался.<br /><br />@Barnes, @KRIGSSVIN:<br />server\sv_ents.c :: SV_BuildClientFrame<br /><br />После того, как я пропустил все entities с поднятым флагом "звук", появились фантомные фларезы.<br /><br />т.е. все, у кого признак (ent->s.sound) есть, у меня автоматом попадают в кадр. Но откуда фантомные фларезы появились? см секретный уровень, там очень заметно.<br /><br />[code]<br />void SV_BuildClientFrame (client_t *client)<br />{<br /> int e, i;<br /> vec3_t org;<br /> edict_t *ent;<br /> edict_t *clent;<br /> client_frame_t *frame;<br /> entity_state_t *state;<br /> int l;<br /> int clientarea, clientcluster;<br /> int leafnum;<br /> int c_fullsend;<br /> byte *clientphs;<br /> byte *bitvector;<br /><br /> clent = client->edict;<br /> if (!clent->client)<br /> return; // not in game yet<br /><br />#if 0<br /> numprojs = 0; // no projectiles yet<br />#endif<br /><br /> // this is the frame we are creating<br /> frame = &client->frames[sv.framenum & UPDATE_MASK];<br /><br /> frame->senttime = svs.realtime; // save it for ping calc later<br /><br /> // find the client's PVS<br /> for (i=0 ; i<3 ; i++)<br /> org[i] = clent->client->ps.pmove.origin[i]*0.125 + clent->client->ps.viewoffset[i];<br /><br /> leafnum = CM_PointLeafnum (org);<br /> clientarea = CM_LeafArea (leafnum);<br /> clientcluster = CM_LeafCluster (leafnum);<br /><br /> // calculate the visible areas<br /> frame->areabytes = CM_WriteAreaBits (frame->areabits, clientarea);<br /><br /> // grab the current player_state_t<br /> frame->ps = clent->client->ps;<br /><br /><br /> SV_FatPVS (org);<br /> clientphs = CM_ClusterPHS (clientcluster);<br /><br /> // build up the list of visible entities<br /> frame->num_entities = 0;<br /> frame->first_entity = svs.next_client_entities;<br /><br /> c_fullsend = 0;<br /><br /> for (e=1 ; e<ge->num_edicts ; e++)<br /> {<br /> ent = EDICT_NUM(e);<br /><br /> if (!ent->s.sound) //willow: Very dirty hack<br /> { //-*-*-*-<br /><br /> // ignore ents without visible models<br /> if (ent->svflags & SVF_NOCLIENT)<br /> continue;<br /><br /> // ignore ents without visible models unless they have an effect<br /> if (!ent->s.modelindex && !ent->s.effects && !ent->s.sound<br /> && !ent->s.event)<br /> continue;<br /><br /> // ignore if not touching a PV leaf<br /> if (ent != clent)<br /> {<br /> // check area<br /> if (!CM_AreasConnected (clientarea, ent->areanum))<br /> { // doors can legally straddle two areas, so<br /> // we may need to check another one<br /> if (!ent->areanum2<br /> || !CM_AreasConnected (clientarea, ent->areanum2))<br /> continue; // blocked by a door<br /> }<br /><br /> // beams just check one point for PHS<br /> if (ent->s.renderfx & RF_BEAM)<br /> {<br /> l = ent->clusternums[0];<br /> if ( !(clientphs[l >> 3] & (1 << (l&7) )) )<br /> continue;<br /> }<br /> else<br /> {<br /> // FIXME: if an ent has a model and a sound, but isn't<br /> // in the PVS, only the PHS, clear the model<br /> if (ent->s.sound)<br /> {<br /> bitvector = fatpvs; //clientphs;<br /> }<br /> else<br /> bitvector = fatpvs;<br /><br /> if (ent->s.sound){c_fullsend++;}else{ //WILLOW'S SOUND HACK!!!<br /><br /> if (ent->num_clusters == -1)<br /> { // too many leafs for individual check, go by headnode<br /> if (!CM_HeadnodeVisible (ent->headnode, bitvector))<br /> continue;<br /> c_fullsend++;<br /> }<br /> else<br /> { // check individual leafs<br /> for (i=0 ; i < ent->num_clusters ; i++)<br /> {<br /> l = ent->clusternums[i];<br /> if (bitvector[l >> 3] & (1 << (l&7) ))<br /> break;<br /> }<br /> if (i == ent->num_clusters)<br /> continue; // not visible<br /> }<br /><br /> } //WILLOW'S SOUND HACK!!!<br /><br />/* if (!ent->s.modelindex)<br /> { // don't send sounds if they will be attenuated away<br /> vec3_t delta;<br /> float len;<br /><br /> VectorSubtract (org, ent->s.origin, delta);<br /> len = VectorLength (delta);<br /> if (len > 400)<br /> continue;<br /> }*/ //WILLOW'S SOUND HACK!!!<br /> }<br /> }<br /><br /> }//-*-*-*-<br /><br />#if 0<br /> if (SV_AddProjectileUpdate(ent))<br /> continue; // added as a special projectile<br />#endif<br /><br /> // add it to the circular client_entities array<br /> state = &svs.client_entities[svs.next_client_entities%svs.num_client_entities];<br /> if (ent->s.number != e)<br /> {<br /> Com_DPrintf ("FIXING ENT->S.NUMBER!!!\n");<br /> ent->s.number = e;<br /> }<br /> *state = ent->s;<br /><br /> // don't mark players missiles as solid<br /> if (ent->owner == client->edict)<br /> state->solid = 0;<br /><br /> svs.next_client_entities++;<br /> frame->num_entities++;<br /> }<br />}<br />[/code]
#14
06 января 2007 в 21:13
скромно замечу, что в нелюбимом вами ку2е последнне версии, на моей карточке звук работал отменно. там, насколько я помню, тоже всё через опенАЛ.
#15
06 января 2007 в 22:21
Сейчас и у тебя должен работать. Да, последний q2e неплох, в том числе по части OpenAL, работает быстренько, а вообще мы любим пути потруднее - приятно изобретать велосипед, когда есть с чем сравнивать ::)<br /><br />Сейчас звук должен просто работать без жутких глюков, а красивым он потом станет.
#16
07 января 2007 в 19:02
Перепроверил очередную порцию кода, выложил обновление. Всем рубить строггов в EAX!<br /><br />Чего-то у меня нездоровая зависть к владельцам Audigy просыпается ;D
#17
08 января 2007 в 08:03
фантомные флаеры???<br />кхм. флаеры щас реализуются только через рендер. клиент сервер не учавствуют.<br />да ладно аудига2 стит щас 1300рэ всего))<br />вот раз<br />http://www.fcenter.ru/products.shtml?eshop/act=h:a:0:1:a:a:a:0:a:1:30::1:1&oper=48998::::<br />вот два<br />http://www.fcenter.ru/products.shtml?eshop/act=h:a:0:1:a:a:a:0:a:1:30::1:1&oper=43774::::<br />всего делов то)) неужель непотянешь? ;)
#18
08 января 2007 в 11:43
Хотел послушать технологию X-RAM. Мне она кажется перспективной, хоть и для игр только. Смысл ее в том, что игра которая знает об этой технологии может записывать звуковые семплы в локальную память аудиокарты. Многократные вызовы семпла уже дело аудиопроцессора и набортной памяти, процессор и системная память в этом не участвуют.<br /><br />Кроме того, у X-Fi больше каналов микширования, что конечно, будет иметь большое значение в ближайшем будущем.<br /><br />Пусть форумчане не сочтут за рекламу, но я ориентируюсь на Creative SB X-Fi XtremeMusic.<br />А вот и антиреклама: Карты от креатива противопоказаны тем, кто вроде меня любит просто послушать качественную музыку без всяких там Эксра, Мега, Супер и прочих никому не нужных неотключаемых технологий и к тому же на дешевых преобразователях.<br />Две звуковухи у меня уже стоят, Creative пока подождет.
#19
12 января 2007 в 23:48
обновление<br /><br />+ Снижена нагрузка на интерфейс OpenAL<br />+ Значительно меньше кликов и шума, вызванного алгоритмами унаследованными от q2e<br />+ Поддержка аудиокарт с 14ю и выше аппаратными каналами микширования. В софт режиме работают 128<br />+ Проведен предварительный баланс громкости оружия<br /><br />В связи с выросшей точностью позиционирования и общим качеством 3D всплыла проблема движков Q2 и Q3, а именно оружия, которое носит игрок. Звуки исходят прямо от ушей игрока, что очень негативно сказывается на их восприятии и сильно глушит игрока. Думаю, если в реальной жизни высрелить из пистолета прямо перед самым ухом эффект будет тот же.<br />"Стрелять" должен не игрок, а модель оружия.<br /><br />Во многом именно этим вызваны жалобы на тихие выстрелы противников
#20
15 января 2007 в 07:34
в общем можно свдинуть оригин источкика звука на ствол в руках. я так сделал дымок из ствола. <br />используй этот оригин) он также реагируует на присидание игрока тк привязан к модели оружия в руках