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