Я никогда не видел такой функции раньше, но она должна обеспечить интересную возможность игрового процесса.
Так что, да, в многопользовательской среде / режиме реального времени (представьте себе FPS), как я могу реализовать эффект замедленного движения / пули?
Что-то вроде иллюзии для игрока, который в настоящее время не работает. Таким образом, все видят его «в реальном времени», но он видит, что все замедлено.
Обновить
Примечание: имейте в виду, что игра FPS должна быть сбалансированной, чтобы она была веселой. Так что да, эта функция времени пули должна быть надежной, давая небольшое преимущество «игроку», но не отнимая у других игроков.
Кроме того, есть вероятность, что два игрока могут активировать время пули одновременно.
Более того:
Я собираюсь реализовать это в будущем, независимо от того, что потребуется. И идея состоит в том, чтобы создать совершенно новый игровой движок для всего этого. Если это дает новые возможности, мне больше интересно услышать идеи.
Между тем, здесь, с моей командой, мы тоже думаем об этом, когда наша теория будет разработана, я собираюсь поделиться ею здесь.
Это вообще возможно? Итак, на вопрос «возможно ли это?» Ответили, теперь пришло время найти лучшее решение.
Я держу «ответ» до тех пор, пока не появится что-то исключительно хорошее, например, теория прототипов с чем-то близким к рабочему псевдокоду.
Что говорят физики и философы:
Ссылки для вас интересны, потому что темы закрыты.
Условия, о которых я думал, когда писал вопрос на сайте физики (скопировано):
- Игрок, находящийся под эффектом замедленного движения, имеет преимущество в совершении более точных действий (стрельба, движение и т. Д.) Благодаря тому, что видит все в гораздо более медленном темпе.
- Его действия должны влиять на других игроков в режиме реального времени.
- Игроки, смотрящие на нашего пострадавшего игрока, не видят никакой разницы, за исключением того, что они могут испытывать действия, которые он совершил (например, игрок получает выстрел / поражается, уклоняется от ракеты).
- Когда игрок выходит из этого эффекта, он просто продолжает в том же темпе, что и обычно. (Если это невозможно, я думаю, ему придется страдать, пока время не будет синхронизировано)
Рекомендации по времени пули (замедленная съемка):
К сожалению, большинство реализаций только для одного игрока
http://www.gamesradar.com/a-videogame-history-of-bullet-time/
Ответы:
Это было сделано раньше. :) Проверьте специалистов , мод полураспада, который имеет два различных бонусов времени пули.
РЕДАКТИРОВАТЬ, чтобы включить информацию zzzzbov ниже
Пулевое время работало в «Специалистах» с точки зрения игрового процесса, заключалось в том, что игрок мог получать бонусы, которые давали бы ограниченное количество «пулевого времени». При использовании пузыря вокруг игрока физика замедляется.
Игроки, находящиеся далеко, будут двигаться с нормальной скоростью, но все в пузыре (пули, игроки, взрывы) будет замедляться. Игрок, который использовал усиление, будет двигаться немного быстрее, что позволит ему убежать или использовать трюки, чтобы увернуться от пуль.
Любой другой, попавший в пузырь «времени пули», все еще имеет преимущество в том, что он может видеть, что должно произойти, но относительная разница в скорости между пойманным игроком и пулями остается неизменной, так что способность реагировать практически отсутствует.
источник
Я не могу представить себе ни одну игру, в которой бы было достаточно времени для одиночной игры, которая бы успешно переводила ее в многопользовательскую игру. Возможно, некоторые из них решили эту проблему, ускорив использование игрока, но это лишает его смысла.
Время пули существует, потому что вы хотите, чтобы игрок чувствовал себя как задира. Вы даете игроку несправедливое преимущество, имитируя восприятие более высокого уровня. Конечным результатом этого является то, что игроки могут целиться, выполняя крутые вещи, такие как выпрыгивание из укрытия и так далее. Если вы просто ускорили игрока, когда у него включено время пули, вы дадите ему меньше времени для реакции, что противоположно тому, что вы хотите.
В синхронной многопользовательской среде на самом деле не существует какого-либо решения для активируемого пользователем «замедления времени», которое имитирует ощущение, которое возникает от его использования в однопользовательской среде. Если само время замедлилось, восприятие у всех возрастает. Особенно в компьютерной игре, где наведение мыши обычно происходит мгновенно, каждый получит преимущество от более медленно движущихся целей.
Теперь, если бы вы были полностью настроены на это, я бы предложил вместо того, чтобы сделать это активируемой игроком функцией, сделать это своего рода «состоянием» столкновения. Подумайте, как фильм Джона Ву, где хороший парень против плохого, и кажется, что все замедляется, когда они стреляют друг в друга. Поэтому, когда начинается «встреча», включите «slo-mo», и вы сможете получить некоторые интересные эффекты. Ребята прыгают вокруг и делают рикошет от пропущенных попаданий пуль, плавающих в воздухе, и все такое. Конечно, это действительно работает только для игры 1 на 1. Вы не получите одностороннего преимущества пули, как в одиночной игре, но это может быть интересным игровым опытом.
источник
Общие мысли
Эта проблема лучше всего описывается с использованием общей теории относительности - возьмем, к примеру, тот факт, что вы можете увидеть влияние времени пули, просто посмотрев в свой телескоп на спутник (причина печально известного нейтрино, летящего быстрее, чем проблема света) - уравнения разрешимые существуют в этих условиях; это означает, что это вполне возможно.
Ваша игра должна быть в состоянии обрабатывать отдельные ориентиры - насколько я знаю, чистый эффект этого будет («игрок» - это человек с активным временем пули):
К счастью для вас, это означает, что игрок в пулевое время имеет преимущество перед всеми остальными; они не могут быть нацелены на него - однако это не будет убедительным, потому что средний человек не увидит заметной разницы при наблюдении замедления времени.
Я настоятельно рекомендую вам опубликовать это по физике (укажите, что это игра, но вам нужны реальные теоретические знания) и спросить, как бы вы приблизили эффект в параллельной симуляции.
Одно из возможных решений, на которое я хотел бы обратить внимание, заключается в том, чтобы мир догнал игрока (по мере того, как он ушел в будущее), когда каждый испытал бы прогрессивное количество (намного меньше, чем фактическое время пули) времени пули, зависящее от далеко позади (в время) они есть. Таким образом, вы можете приблизить разницу во времени, не имея дело с сохранением прошлого состояния и т. Д. Вам понадобится какой-то способ объяснить этот эффект, «восстановление времени» или что-то в этом роде, потому что это не физически правильно.
Другая идея состоит в том, чтобы злоупотреблять самыми основными физическими уравнениями (
s = d/t
), когда игрок попадает во время пули, все становится меньше - если вы вдвое уменьшаете размер всего с его точки зрения, но сохраняете его скорость такой же в соответствии с его исходной системой отсчета (эффективно удвоить его) уравнение все равно будет сбалансировано. Последовательности искривления в космических фильмах используют это расширение пространства, чтобы изобразить эффект, поэтому люди привыкли видеть его.Актуальное решение
Я дал этому еще больше мысли. Если вы посмотрите, как работает сетевая система Steamworks (есть ли у кого-то ссылка? ), Сервер постоянно опережает время на определенную величину; и каждый клиент знает о «следующем» кадре, к которому он должен интерполировать.
Скажем, например, что сервер на 20 мс опережает всех игроков. Когда игрок вводит время пули, измените его интервал обновления на 40 мс (его симуляция будет выполняться с временными шагами 40 мс, а сервер поставит свои действия в очередь на 40 мс в будущее) - что, в основном, продвинет в будущее по отношению к другим игрокам: в дополнение чтобы заставить его двигаться быстрее от их ссылки и заставить их двигаться медленнее от его. Как только он оставит время пули, предоставьте всем остальным преимущество в 5 мс перед ним, чтобы они могли играть «наверстать упущенное» (это ваши
time rebound
совпадения, умные игроки по совпадению опередят время в течение этих периодов догоняющего времени). Может показаться немного лучше, если вы сопоставите параболу с его шагом по времени - это заставит вещи замедляться, останавливаться, а затем постепенно ускоряться снова.Отказ от ответственности: я не физик, но у меня есть практическое знание относительности.
источник
Я хотел добавить свои 0,02 доллара, так как я реализовал прототип режима времени, который работал в многопользовательских играх для Heroes Over Europe .
В одиночной игре нажатие кнопки в нужный момент замедлит время и увеличит масштаб намеченной цели. Я не хотел замедлять глобальное время в многопользовательском режиме для воспроизведения этой функции (поскольку игра должна была поддерживать 16 игроков одновременно), поэтому я использовал метод «пузыря».
В частности, когда был запущен режим времени пули, вокруг целевого самолета была создана сфера. Скорость прохождения времени изменялась в зависимости от расстояния до центра сферы; время линейно ухудшается от его поверхности до минимального значения где-то вблизи центра. Скорость также изменялась в зависимости от того, как долго существовала сфера и как долго она оставалась, прежде чем «испарилась».
Это было синхронизировано между машинами, посылая пакет, который определил будущее время начала для пузыря; это позволило эффекту оставаться синхронизированным, несмотря на задержку. (Точно так же, когда эффект должен был закончиться рано, пакет объявит будущее время, в которое он должен был закончиться.)
Скорость прохождения времени всегда определялась функционально: учитывая определение сферы, текущее время и положение, можно было определить, как быстро течет время.
Чтобы эффект работал, несколько игровых систем должны были быть адаптированы к этому «функциональному» определению времени. Самолеты, пули, ракеты и другие эффекты каждый использовал индивидуума,
dt
который был разработан путем вызова соответствующей функции. Большая часть работы по созданию прототипа была проведена здесь.Результат сработал достаточно хорошо: игрок, на которого нацелено время пули, заметно замедлится и получит (небольшой) шанс вырваться из перекрестия своих агрессоров и убежать от града медленных пуль. Соседние игроки могли видеть самолеты и пули, уклоняющиеся друг от друга в замедленном режиме, но в остальном они не пострадали.
Обратите внимание, что запускающий игрок также был замедлен, но не находился в невыгодном положении: у него был увеличенный обзор цели и он мог повлиять на убийство одним выстрелом на свою жертву. Другой игрок может попытаться убить вас (или убить воровство!) В этом состоянии, но его самолет (и его пули) будут затронуты при входе в пузырь, что даст вам время на побег.
К сожалению, несмотря на то, что это работало, у нас никогда не было времени, чтобы завершить и оттачивать функцию для многопользовательской игры, поэтому она была исключена. (Одиночный игрок все еще сохранил эту функцию, как «Ace Kill».)
источник
Не совсем пулевое время, но может быть весело
Как насчет того, как Брэйд замедляет время? Т.е. чем ближе к человеку, который испытывает время пули, тем медленнее идут дела ... и если вы находитесь вне сферы влияния, время течет нормально.
... например, если у игрока А есть время пули, он создает вокруг него градуированную сферу «медленного времени», чтобы он мог правильно прицеливаться, но не обязательно двигаться быстрее - тогда игроку Б, стреляющему в него пулями, придется Слишком предсказуемо, куда попадет пуля, так как она будет замедляться по мере приближения к нему.
Хотя, чем больше я об этом думаю, тем меньше думаю, что это сработает, потому что это может сделать игрока А легкой мишенью (так как его голова замедлится?) - но было бы интересно увидеть его в 3D в любом случае.
источник
Я знаю, что это старый вопрос, но мне было трудно не упомянуть проблему с большинством ответов, касающихся относительности
Реализованный с эффектами, как описано в вопросе, время пули в мультиплеере не возможно.
Причина в том, как работает теория относительности; некоторые из вас упоминали об этом и, очевидно, понимают относительность, но проблема в том, что ваши модели настроены неправильно.
Многие люди использовали в своих ответах ссылку «Игрок А против игрока Б», но, к сожалению, ни одна из этих вещей на самом деле не существует. Да, у вас есть игроки, может быть, даже многие из них, и да, они могут контролировать и взаимодействовать со своим миром и иметь собственную перспективу игры, но перспектива не является точкой отсчета во времени: это просто пространство XYZ, спроецированное в XY самолет.
Существует только одна точка отсчета времени, и это сервер (или хост). Существует только один взгляд на физическое состояние мира и, следовательно, только один ориентир. Игроки видят на экране разные графические изображения одного и того же физического моделирования.
Чтобы один игрок мог просматривать симуляцию на одной скорости, а другой - просматривать ту же симуляцию на другой скорости и не иметь рассинхронизации, просто невозможно. Где-то что-то должно дать.
Любые попытки провести несколько симуляций или запустить сервер впереди клиентов просто не имеют смысла. Эффект, описанный в посте, просто невозможно осуществить, не форсируя единую точку отсчета или не позволяя мыслим рассосаться и не сообщая игрокам, что их действия на самом деле не произошли после факта.
Я думаю, что лучшее решение аналогично тому, которое уже было дано и которое должно иметь эффект косы, когда ваша скорость изменяется в пузыре вокруг игрока. При этом игрок не будет замедляться, а пузырь всегда будет располагаться и перемещаться вместе с ним по центру. Это позволяет игроку двигаться на полной скорости, а самые близкие чувствуют себя замедленными. Он получает преимущество в силе, и люди, находящиеся далеко от этого района, не чувствуют эффекта. Те, кто рядом, замедляются, но было бы очевидно, что кто-то использует включение (я бы посоветовал как-то выделить игрока, который его использует, чтобы противники полностью понимали, что происходит и почему).
источник
Это было бы очень неловко. Даже не смотря на проблему замедления времени, представьте, что вы - игрок, который потратил 4 секунды в режиме пули, тогда как все остальные участники игры потратили 2 секунды в режиме реального времени. Поскольку в действительности для всех прошло одно и то же время, вам придется каким-то образом «вернуть» эти две секунды в игре. Так что в какой-то момент вам нужно будет «пропустить» 2 секунды игрового времени, или потратить немного времени на бег быстрее, чем обычно, или что-то еще, что, вероятно, сделает время пули пустым.
Плюс ко всему, есть необходимость в том, чтобы отправлять то, что вы делаете, с интервалом в 2 секунды в ваше время назад во времени на 1 секунду всем остальным.
источник
Бросайте в игрока быстрые мини-события, напоминающие время, чтобы уклоняться от пуль или автоматически отслеживать цели противника, при этом движения вашего игрока выглядят размытыми или «поэтапными» для других игроков (чтобы они не царапали голову, почему их пули не не бьёт) Это кажется самым простым и практичным переводом для многопользовательской игры.
Любое другое решение предполагает изменение какого-либо физического элемента игры для одного или нескольких игроков, который не применяется параллельно для других, я бы предположил.
источник
Просто замедлите всех остальных, кроме игрока, который испытывает время пули. Вы можете сделать это, просто уменьшив чувствительность мыши.
источник
Допустим, у нас есть игрок A в режиме маркера и игрок B в режиме реального времени. И они делают следующее с точки зрения игрока B:
Теперь, с точки зрения игрока А, это займет вдвое больше времени - поскольку мир движется медленнее для него:
Наконец сервер получает следующие события:
Итак, у нас есть две начальные проблемы. Во-первых, А теперь на 3 секунды отстает от всех остальных. Это может быть интересным игровым механиком, если у вас есть концепция, которая подразумевает, что он должен был погасить этот долг. Представьте себе шутера на основе укрытия, где вы можете активировать время пробивания пули по открытой местности, но как только вы окажетесь в укрытии, вам придется стоять на месте, пока остальной мир не догонит вас (три секунды времени, которые вы пропустили, воспроизводятся )
Вторая проблема гораздо больше. Сервер должен реорганизовать события в хронологическом порядке для каждого игрока и выяснить результат. Сначала Б стреляет в А - это происходит через три секунды после начала игры, и А видит это через 6 секунд - пока проблем нет. В 4 секунды игрок A стреляет в B. На временной шкале B это произошло две секунды назад. Так что же нам делать с двумя секундами игрового процесса, которые уже прошли для него, включая его выстрел в А?
Мы могли бы аннулировать это - в основном сказать: «Я знаю, что игрок B думает он застрелил этого парня, но оказывается, что он уже мертв, поэтому давайте притворимся, что этого никогда не происходило». Это было бы дерьмовым опытом, очень похожим на отставание, но решило бы проблему ,
Мы могли бы сделать Евангелие обоими временными рамками - использовать точку зрения серверов как полную правду и беспокоиться о временной шкале каждого человека независимо. Через 3 секунды Б стреляет в А и убивает его. В 4 секунды A стреляет в B и убивает его. Оба игрока умирают от ударов, которые они не видели. Звучит не очень хорошо, но, возможно, есть хороший способ сделать это после того, как все игроки пройдут краткий курс в безумном мире относительности.
У нас может быть система псевдо-реального времени - пошаговая игра, в которой вы сначала планируете свои ходы, а затем запускаете одновременный подсчет событий. Хорошее решение, которое решает все проблемы, кроме того, что это не тот тип игры, который вы хотите написать.
Короче говоря, я не думаю, что есть хороший способ использовать пулевое время, рассматривая его в классическом смысле, влияющем на человека, использующего его - они движутся быстрее, они видят мир медленнее, все остальные ведут себя как обычно. Если мы повернем вспять, и все остальные попадут в точку зрения пули-таймера и увидят, что они движутся медленнее, а их элементы управления становятся вялыми, то все это происходит синхронно и проблем не возникает. Но действительно ли это время пули? Хотя это может выглядеть как для стороннего наблюдателя (и при повторных матчах), ни один из участников не получит ожидаемого эффекта.
источник
Нет, это невозможно. Представьте, что один игрок переворачивается, чтобы замедлить движение, что увидят другие игроки? Вы бы хотели, чтобы они видели, как игрок с пулевым временем движется нормально, но имеет молниеносные рефлексы, верно? Но, к сожалению, все, кто играет в игру, будут играть в игру в одном и том же режиме в реальном времени. Поэтому единственным способом сделать это было бы замедлить всю игру, избавившись от любого преимущества, которое она приносит, так как каждый будет в пуля времени. Также было бы довольно неприятно, когда игра замедлялась все время, когда кто-то нажимал на эту кнопку.
Существуют обходные пути, которые приводят к тому, что игроки получают аналогичное преимущество (например, возможность двигаться быстрее и т. Д.), Например, замедляя всех ELSE и давая вам возможность двигаться в обычном режиме (тогда в режиме воспроизведения вы можете ускорить их до нормального уровня и реагировать быстро) но я не думаю, что это действительно то, что вы хотите.
источник
У FEAR было пулевое время в мультиплеере, но это относилось ко всей команде и замедляло всех в другой команде.
Пулевое время в многопользовательском режиме в реальном времени без фактического замедления остальных десинхронизирует клиентов, медленный игрок будет реагировать на события, которые другие игроки делали давно, в то время как они будут реагировать на текущие события.
источник
Возможно, вам следует установить оборудование, необходимое для стрельбы в игрока, который запускает время полета пули в космос на скоростях, близких к скорости света.
Это решит все ваши проблемы, но может привести к увеличению пинга / задержки.
источник
ну, это не будет проблемой, если они все будут двигаться медленнее, чем обычно, но не слишком медленно, и тот, кто его активирует, будет двигаться быстрее, как погружая всю игру под воду, или отправит ее в космос, а тот, кто активирует, будет двигаться мирно, как никогда.
источник