qazzaq
2 постов
Карма: 1
#1 16 июня 2009 в 09:33
Собственно, проблема:<br /> игра вылетает в черный экран при переходе с уровня Мейн Гейт ан уровень Детеншн Сентр - в синглплее.<br /> Та же ситуация -черный экран при попытке загрузить в мультиплеере эту же карту - Детеншн Сентр (jail2) <br /><br />Билд: quake2xp 1.25 point release 7 с hi-polygonal models pack<br /><br />
willow
570 постов
Карма: 56
#2 16 июня 2009 в 10:06
Переполнение сетевого стека. Возможно, проблема нерешаема.<br />Игра не вылетела в чёрный экран, а создана непонятная ситуация когда&nbsp; сервер не может пропихнуть клиенту слишком большой кусок стека. Сервер подавился а клиент ждёт что скажет сервер.<br /><br />Жмём ESC, появляется меню. В опциях находим:<br /><br />Unlimited Range Ambient - off&nbsp; - и уровень появится.<br />Unlimited Range Ambient - on&nbsp; - и можно продолжать играть. Самая большая нагрузка на стек при старте уровня.<br /><br />Эту настройку я делал для себя и мне результат очень нравится. Её суть в том, чтобы объекты с приаттаченым звуком не секлись портальной системой Quake2 , грубо говоря, звук становится физически правдоподобен, тихо слышен за стенами, дверями и даже с учётом затухания дальше слышен в пределах одной комнаты а не просто грубо обрывается. по некоей условной границе. Порталы Q2 рассчитаны на видимость объектов но никак не слышимость. Слышимость объектов иная чем видимость. Можно не видеть объект, но его вполне возможно слышать, так что вам решать - передёргивать переключатель на jail2 и кажется на ещё каком-то уровне или вовсе отключить его. Однако, многие &quot;улучшения&quot; звука связаны именно с этой настройкой, с богатой звуковой панорамой. Эксклюзивная возможность попробовать &quot;как было бы если бы звук Q2 был сделан правильно&quot;. Только в Q2XP.
qazzaq
2 постов
Карма: 1
#3 16 июня 2009 в 12:52
Спасибо огромное!!!<br />Помогло!<br />А звук в игре, нужно сказать, действительно отличный ;) (у меня Audigy 2 ZS) <br />Респект разрабам конверсии<br />
KRIGSSVIN
930 постов
Карма: 53
#4 16 июня 2009 в 13:41
Ого, не знал, что ты порталы поотключал для звука&nbsp; ;D
willow
570 постов
Карма: 56
#5 16 июня 2009 в 15:15
Ну, не совсем. Порталы очень даже работают, просто сквозь порталы просачиваются только те объекты, к кому приаттачен звук ;D<br />Всё честно, кому не нравится - могут отключить хак насовсем. Известно, что Barnes не использует данный хак - так что дело вкуса, религиозных убеждений, и т.д. и т.п. Однако, он не против данного решения, ибо это пока лучшее решение. Если предложите более достойное решение с аналогичной функциональностью - флаг вам в руки&nbsp; ;)<br />
VorteX
341 постов
Карма: 60
#6 24 июня 2009 в 05:19
willow: как насчет программно дизаблить хак в течении X секунд после загрузки уровня, то есть когда высока вероятность облома со стеком?
willow
570 постов
Карма: 56
#7 24 июня 2009 в 12:27
Нет-нет-нет. Мне эти хаки уже в известном месте. Не дело, когда движок на соплях собран.<br /><br />Проблема решаема, достаточно лишь нативным сделать протокол R1Q2<br />http://www.r1ch.net/stuff/r1q2/<br />Это в общем-то не фикс к данной проблеме, но правка протокола который сам по себе - проблема. К чести R1Q2 он отделяет сетевые пакеты от рендера, это ли не плюс? Один из ржавых гвоздей квейка это его монолитный глобальный цикл с задержками, ожиданиями. Чтобы разогнать графику требуется разгонять все остальные подсистемы, это малоэффективно скажем так. И всё сидит на одном ядре процессора сколько бы их у него ни было.<br /><br />В протоколе R1Q2 по умолчанию уже заложено пакетирование сообщений. Это разумно и правильно.<br /><br />В пользу R1Q2 так-же тот факт, что он ближе к протоколу Q2Pro который является, как я понимаю, его дополнением.<br /><br />Ну а если рассуждать о том, как делать совсем правильно, то проблема решена, к примеру, в движке OverDose но там &quot;правильный&quot; звук изначально отделён от геометрии и протокол иной и редактор уровней иной и всё принципиально иное. Но это уже и не Quake 2, сами понимаете...
KRIGSSVIN
930 постов
Карма: 53
#8 25 июня 2009 в 08:33
Да можно и перейти на протокол R1Q2, тем более для сетевой игры он, как я понимаю, самый распространённый среди портов. Единственное что - как быть с модами? Или поддерживать два протокола?
willow
570 постов
Карма: 56
#9 25 июня 2009 в 11:01
Одной из возможностей протокола R1Q2 является совместимость с оригинальным протоколом, если только это не завлекалочка. Единственным выходом я вижу выключать расширенные возможности движка если используется старый протокол и использовать все возможности движка если используется новый протокол. Я хотел бы прояснить что значит &quot;все возможности&quot;. Это сравнительно со старым, это возможности, которые достижимы с данным конкретным протоколом R1Q2. А они по-прежнему очень ограничены (применительно к моим задачам, во всяком случае). Все принципиально новое должно быть реализовано своим, а значит с никем и ничем не совместимым протоколом.
VorteX
341 постов
Карма: 60
#10 25 июня 2009 в 12:05
К вопросу о введении нового протокола. Насколько я понимаю, сейчас звук идет вместе с ентитис по основному пайплайну. Так вот, можно вынести отправку звука клиенту в асинхронный модуль, который будет составлять сообщение нового формата - а&nbsp; данные отправляем клиенту в рамках текущего протокола новой SVC-командой (да можно даже через TEMPENTITY). Остается сделать на сервере проверку, слать клиенту новый звук&nbsp; или нет. Причем чтобы не дублировать ентитис-путь, слать нада звук, зарезанный портальным кулингом. Получается чисто клиент-сайд расширение, не затрагивающее тип протокола - &quot;отсылка клиенту дополнительных звуков&quot;.