Створення власної камери вбивства


15

Я планую створити власну систему кулачків убивства для набору інструментів пісочниці. Після роздумів про механіку самого кулачка вбивства, однак, я зовсім загубився. Я намагаюся відтворити тих, що часто зустрічаються в дежурних іграх, які показують, з погляду вбивці, фактичну сцену вбивства.

Мої думки:

-Я не можу просто зберегти в пам’яті, коли люди вбивають інших людей, тому що я не знаю, коли почати «процес запису». Для мене є можливість точно визначити, коли хтось «збирається» когось вбити.

- Моя єдина реальна ідея поки що - мати повний дублікат всього завантаженого на бік, копіюючи весь рух від початкового світу, але з затримкою на 10 секунд. Таким чином, усі камери вбивства були б тривалістю 10 секунд, а камера лише перенесена на другий світ свого вбивці.

Мої запитання:

Чи є вже прийнятий спосіб це зробити? Хтось має хороші ідеї для подібного? Дякую, якщо зможете!

Відповіді:


10

Зберігання останніх секунд даних про переміщення відповідних динамічних об'єктів .

Ці дані повинні бути достатньо повними, щоб за потреби вони могли бути використані для реконструкції сцени killcam, але недостатньо неповними, щоб ви могли дозволити їх завантаження та зберігання через досить короткі проміжки часу.

Приклади речей, які ви хочете відстежити:

  • Який шлях видимий гравець рухається / дивиться
  • Збільшити масштаб вбивці в зоні дії пістолета

Те, що ви, мабуть, хочете оптимізувати:

  • Дані про гравців, яких вбивця не бачить
  • Фактичний вихід на екран будь-кого

У вашій відповіді є велика проблема: зазвичай ви не можете передбачити чиюсь смерть, а також не можете передбачити, хто збирається вбити наступне вбивство. тож оптимізуючи дані про деяких гравців, ви можете втратити можливість повторного вбиття.
Ali1S232

2
@Gajet Я думаю, що в цьому випадку він має намір скомпонувати всі відповідні об'єкти і зберігати дані лише для них. Іншими словами, ви вже хочете мати якийсь механізм зберігання / оновлення, щоб відслідковувати позиції всього та їх сутності, але обмежений час. Скажіть, ви просто хочете останні 10 секунд для камери вбивства. Вам просто знадобиться структура даних, достатньо велика, щоб зберігати останні 10 секунд, і все старе, ніж те, що замінюється в кінці, наприклад, у черзі з подвійним завершенням.
ChrisC

Тільки підтверджую, що відповідь Рікера - це те, що я мав на увазі. Справді: коли ви не можете передбачити майбутнє, готуйтеся до цього. :)
Анко

1
Важливо зазначити, що онлайн-ігри в режимі реального часу ніколи не показують гравцям, що насправді сталося; гра завжди гадає про те, що може бути правдою, але через затримки та інші проблеми з мережею ігри не дізнаються, що таке "об'єктивна правда" набагато пізніше - якщо взагалі. Тож якщо у вас немає даних "убити кулачок", щоб можна було знову створити чужу точку зору, ви абсолютно не повинні почувати себе погано для складання правдоподібних даних про заборону в тих випадках, коли вам це потрібно.
Тревор Пауелл

0

Поняття не має, як це зазвичай реалізується, але ви могли б з кожної кулі зберегти кліп від моменту його вистрілення до моменту, коли він потрапить у ціль. Якщо зйомка виконується лише за допомогою хіт-параду, ви можете обчислити, чи потрібно генерувати камери вбити камери в тому ж циклі, коли ви виконуєте сканування хітів.


0

Ви можете зберігати перетворення об'єкта кожні пару секунд або близько того. Зробіть це для всіх застосовних динамічних об'єктів. Постарайте збереження таким чином, щоб кожен кадр зберігав лише пару матриць. заощаджуйте якнайдалі в часі, як вам подобається.

Під час відтворення ви фактично використовуєте ці перетворення в механізмі візуалізації для анімації по сцені, інтерполюючи між собою перетворення за часом для кожного кадру, якщо це необхідно.

Це не точний дублікат, але дуже близький, і це дає можливість гравцеві мати можливість контролювати камеру під час відтворення, щоб вони могли вибрати, звідки переглядати сцену.


є одна проблема зі збереженням лише матриць перетворення, не економивши нічого іншого! Наприклад, якщо ви збережете лише матриці трансформації для гравців, анімація може піти не так, ви не зможете побачити, скільки завдав ворог, перш ніж вбити вас, і коли він вистрілив з нього. є довгий список деталей, які ви пропускаєте, використовуючи свій метод, і ви можете легко про них думати.
Ali1S232

Будь ласка, перечитайте. Ви зберігаєте перетворення для всіх відповідних динамічних об'єктів, а не лише матриць для гравців. Це також досить просто, щоб зберегти дані про здоров’я та кращі результати, а також інші предмети. Справа в тому, що економія занадто багато даних споживає ігрові ресурси часу (погано). Ви економите якнайменше, і можете дозволити вашому рендерингу зробити якомога більше важкого підйому шляхом інтерполяції під час повторного відтворення. Це компроміс, але що ні?
Стів H

0

ви можете реалізувати якусь функцію відтворення у своїй грі. використовуючи функцію повтору, killcam - це лише повторення, яке відтворюється з певного періоду гри та з певного часу гравця. пізніше ви можете зберегти повтори та дозволити іншим переглядати ігри після їх закінчення.

також ваша ідея запустити ту саму гру з введеннями на 10сек затримки - хороший підхід, якщо ваша гра не споживає великої обчислювальної потужності.


0

Як щодо цього ...

Записуйте лише тоді, коли є можливість вбивства.

Подумайте про це з точки зору AIM-BOT. Це націлюватиметься / стрілятиме лише тоді, коли вбивство - це можливість. Тож слід записувати лише тоді, коли ворог знаходиться в межах зони, що підлягає вбиттю / видимості.


А як щодо ситуацій, пов’язаних із стрільбою через об’єкт? Настільки багато рейтингу, безумовно, буде інтенсивнішим процесором, ніж деякі інші ідеї. Хоча гарна ідея, я можу вважати це частиною рішення.
Freesnöw

0

Встановіть радіус навколо програвача, і якщо інший гравець введе радіус, він розпочне запис екрану для обох людей. Тоді ви чекаєте, чи хтось убитий. Якщо так, то ви знайдете вбивцю і знімете їх запис, і перемотайте кількість часу, яке минуло після вбивства плюс довжина, яку ви хочете, щоб це було відео, і перемотайте його та відтворюйте його для того, хто вбив. Якщо ніхто не загинув і ніхто більше не знаходиться в радіусі навколо символу, тоді видаліть або припиніть запис. Якщо вбивця збільшується в масштабі, тоді киньте промінь туди, куди він націлений, і створіть інший радіус спуску. Якщо хтось у ньому, то він записує екран того, хто знаходиться в радіусі, куди націлений персонаж, і персонажа, який націлений. Якщо хтось помирає від героя, який націлений, то ви забираєте час, який минув з моменту вбивства плюс тривалість, яку ви хочете, щоб кулачок вбивства був, і ви перемотаєтесь і граєте це для того, хто вбив. Якщо вони зменшують масштаб, то припиніть запис. Це концепція, тому я не спробував її.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.