Iphone SDK - запись игры в игре - PullRequest
0 голосов
/ 18 мая 2010

Можно ли добавить функцию записи игрового процесса в вашей игре, не израсходовав слишком много памяти?

Я хочу разрешить пользователю сохранять там игру в виде видеофайла, если это возможно?

// Редактировать - сделать вещи проще, чтобы быть более оптимистичными // Идея состоит в том, что пользователь может использовать приложение для изменения текстур в предварительно анимированной сцене, а когда они это сделают, они могут экспортировать его в видео.

Спасибо

1 Ответ

0 голосов
/ 18 мая 2010

Является ли ваша игра детерминированной? Если это так, то вы сможете записывать ввод пользователя. Затем, чтобы воспроизвести его, вы просто запускаете игру и предоставляете записанный ввод вместо живого ввода.

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

Во-вторых, будет проще, если вы используете установку MVC (контроллер вида модели), тогда все, что вам нужно, это контроллер воспроизведения и живой пользовательский контроллер, который при необходимости записывает ввод с меткой времени. Примечание: в зависимости от того, как вы это делаете, может быть проще использовать количество кадров, а не фактическое время. Когда игрок нажмет на запись, соберите все состояние игры и начните захватывать ввод игрока.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...