Как создать функцию Ghost Replay в игре?

19

Когда вы устанавливаете лучшее время круга в гоночной консольной игре, у вас есть возможность соревноваться с призраком.

Как можно создать эту функцию для одиночной игры случайного типа?

Клод Келлер
источник
2
+1 Интересный вопрос для того, кто только начинающий в разработке игр (я). =)
Уилл Маркуиллер
Если бы вы сказали нам, что это за игра, мы могли бы помочь вам более конкретно.
AttackingHobo
Смотрите также: gamedev.stackexchange.com/questions/6080/…
Яри ​​Комппа

Ответы:

10

Призраки, как правило, отображаются путем воспроизведения предыдущей попытки. Этот повтор воспроизводится с несокрушимой версией автомобиля игроков, так что вы не можете на него повлиять. Так как у гоночных игр часто есть функция воспроизведения, этот вид приходит бесплатно.

Вот хорошая отправная точка для построения системы воспроизведения: http://www.gamasutra.com/view/feature/2029/developing_your_own_replay_system.php

Также есть ряд вопросов по этой теме:

wkerslake
источник
+1 Только что узнал что-то новое с твоим ответом, спасибо! =)
Уилл Маркуиллер
1

Это зависит от технологии, с которой вы работаете. Следовательно, мы не можем действительно обсуждать лучший способ, поскольку он может измениться от технологии к другой. Общая идея, на мой взгляд, заключается в следующем:

  1. Используйте базовое хранилище данных для сохранения ваших данных (XML, файлы cookie, база данных, CSV, другие ...);
  2. Получите доступ к данным в этом хранилище данных;
  3. Вам необходимо хранить информацию о лучшем счете игрока, поэтому требуется идентификатор (электронная почта, имя для ввода, другое ...);
  4. Свяжите этот лучший результат с идентификатором тем или иным способом.

Короче говоря, предполагая использование базы данных, мы могли бы иметь две таблицы:

  1. Данные о пользователях / игроках (идентификатор, адрес электронной почты и т. Д.);
  2. Лучшая информация о табло.

Затем вы можете сохранить информацию о пользователе вместе с индивидуальным табло, которое, при желании, может содержать регистрацию даты и времени относительно того, когда эта оценка была достигнута.

Надеюсь, это поможет и что я правильно понял вопрос. В противном случае, пожалуйста, сообщите, чтобы я мог соответственно отредактировать свой ответ.

Уилл Маркуиллер
источник
3
Я думаю, что он, вероятно, ищет механизм записи / воспроизведения для достижения этой цели. Детерминированная игровая среда, отслеживание событий, которые меняют ситуацию (например, ввод игрока) и т.п., обычно являются рекомендуемыми способами сделать это.
Джеймс
Спасибо за ваш вклад, Джеймс! Это вещи, о которых я не знаю, хотя мой ответ - тоже легко сделать, смиренно. Тем не менее, мне интересно узнать больше по теме. Да, и +1 за ваш комментарий, это учит меня, что есть другой выполнимый подход. =) Спасибо! =)
Уилл Маркуиллер
Мне действительно жаль эту глупость. Я все еще изучаю основы, спасибо вам обоим за вашу информацию, я не могу ответить с должным знанием, потому что у меня их нет. то, чего я хочу достичь, это каждый раз, когда я пытаюсь побить свой личный высокий балл, который я вижу на экране призраком (повтором) того, как я играл в игру, когда я устанавливаю свой высокий балл
Клод Келлер
@ Будете ли вы рассказывать ему информацию о том, что можно было бы сделать для многопользовательской настройки, когда он действительно выяснит ответ на свой вопрос об игре для одного игрока. Его вопрос, как создать призрака в первую очередь.
AttackingHobo
@AttackingHobo: Спасибо, что сказали мне. Я на самом деле понял из комментариев Джеймса о записи, затем, прочитав ответ wkerslake, теперь я лучше понимаю, что спрашивает ОП. Кроме того, вы правы, когда говорите, что моя предложенная установка более вероятно будет использоваться в многопользовательской настройке. Эй, я все еще учусь здесь, и спасибо, что позволили расти лучше! Разработка игр все еще для меня новый трюк, хотя я опытный разработчик. =) Спасибо за ваш комментарий AttackingHobo! =)
Уилл Маркуиллер
1

Нелегко ответить на этот вопрос, не имея больше информации о вашей игре. Ответ от wkerslake работает до тех пор, пока текущее прохождение с призраком не может повлиять на детерминизм записанных данных о призраке. Если записанные данные являются испытанием времени одного автомобиля в статической среде, вы должны быть в порядке, используя эту технику.

Однако во многих играх с призрачным воспроизведением, таких как Super Meat Boy, положение игрока может изменять состояние уровня и AI. Понятно, что у вас не может быть призрака, влияющего на мир и ИИ, поэтому может быть лучше просто записать положение + изменения анимации (и все остальное видимое) в каждом кадре для основного игрока. Во время воспроизведения просто визуализируйте призрак в текущем местоположении и в кадре анимации, не имея его в мире. Это позволяет вам воспроизвести призрака и не повлиять на него.

Lathentar
источник