「動画の撮り方」の編集履歴(バックアップ)一覧に戻る

動画の撮り方 - (2007/10/05 (金) 19:34:03) のソース

>#contents

* 概要
ここでは、エミュレータを使った動画(movie)の撮り方について解説します。

* どのsnesエミュレータを使ったらよいか

選択肢は2つあります。snes9xとzsnesです。
[[TASvideos>http://tasvideos.org]]ではsnes9xを推奨しています。

- snes9x

最もポピュラーなsnesエミュレータです。
非常に開発が活発で、どんどん発展しています。
特に、動画撮影の機能がとても充実しています。
特別な理由がない限り、撮影にはこのエミュレータを使うと良いでしょう。

- zsnes

もう一つのポピュラーなsnesエミュレータです。
こちらもsnes9xと同じく、開発が活発です。
しかしsnes9xに比べると、やや後塵を拝する感じになっています。
GUIが少々特殊で、初めて使う人にとっては少し使いづらくなっています。

管理人はsnes9xを愛用しています。
これから先はsnes9xを使うことを前提に話を進めます。

* snes9xといっても色々あるが、どれを使ったらよいか

snes9xは海外の人が作った優秀なオープンソースのエミュレータで、
これをもとに多数のsnes9xクローンが開発されています。
その数や膨大で、どれを使ったらいいか非常に迷うと思います。

管理人のお勧めは、snes9x-improvement9です。
これはエミュレータ動画の総本山[[TASvideos>http://tasvideos.org]]発のエミュレータです。
動画撮影の機能が特化されており、この目的のためにはこれが一番だと思います。
[[TASvideos>http://tasvideos.org]]もこのエミュレータの使用を推奨しています。

気をつけて欲しいのは、[[本家snes9x>http://www.snes9x.com]]の最新版(ver1.43)は使わないほうがいいです。
このバージョンになってから、色々と不具合が発生しているからです。
特に、これで撮影した動画があとで再現できないバグは致命的です。
snes9x-improvement9を使いましょう。

* 動画の撮り方(smvファイルの作り方)

以下のような手順を踏んで撮影します。

+ ゲームを再生中に、[file]→[Movie Record..]を選択します。
+ ムービーファイルの名前をどうするか聞かれるので、適当な名前にします。
+ 今すぐ撮り始めるか、リセットした直後から撮り始めるか、どちらかを選択します。
+ OKボタンを押します。
+ 録画が始まるので、好きなようにプレイをしてください
+ 撮りたいものが撮れたら、[file]→[Movie Stop]を選択して終了させます。
+ 動画ファイル(smvファイル)が生成されています。

なお、デフォルトでは自動的にエミュレータ本体が存在するフォルダ内にムービーファイルが生成されます。
好きな場所に生成したいのであれば、手順2の時に[Browse..]を選択して好きなフォルダを選択してください。

* 動画の再生の仕方

撮った動画を再生するには、以下の手順を踏んで下さい。

+ ゲームを再生中に、[file]→[Movie Play]を選択。
+ 再生したいsmvファイルを選択してOKを押す。
+ 動画が再生されます。

再生の際には、必ずそのsmvファイルが録画されたエミュレータのバージョンで再生してください。
同じsnes9xでもバージョンが違うと、うまく再生されないことが多いです。
再生に失敗すると、どこかでタイミングがずれて動きがおかしくなります。

* 追記(再録画)をするにはどうしたらいいか

動画を撮っていると、思い通りのプレイが出来なくて失敗することがあります。
そんなときの為、エミュレータには失敗する前から撮り直す機能がついていて、それを追記といいます。
この追記を使えば、成功するまで何度もプレイをトライすることが出来ます。
この機能こそが、エミュレータ動画を完璧にするための最重要ポイントです。

追記をするには以下のような手順を踏んでください。

+ 失敗を予見し、あらかじめ撮り直すポイントを作っておく。これをmovie snapshotという。
+ movie snapshotを作るには、snes9xでは[Shift + F1 ~ F9]を押します。
+ 思い通りのプレイが取れなかったら、movie snapshotを作ったファンクションキー(F1 ~ F9のいずれか)を押します。
+ [movie re-recorded]と表示され、movie snapshotを撮った時点からプレイを再録画できます。

movie snapshotの作り方は、ステートセーブの作り方(いわゆる、「どこでもセーブ」)と同じであることに注意してください。
録画中には、[Shift + F1 ~ F9]を押すとステートセーブではなくmovie snapshotが作られます。


* すでに撮影したsmvファイルを、途中から撮り直す or 撮影を再開するには

エミュレータでは、すでに撮った動画を途中から撮り直す or 撮影を再開することも出来ます。
この機能も、エミュレータ動画を完璧にするための最重要ポイントです。

以下のような手順を踏んでください。

+ 通常通り、smvファイルを再生する(このときRead-onlyの属性にチェックがある場合はチェックをはずす)
+ 撮り直したい or 撮影を再開したいポイントまできたら、追記と同じように[Shift + F1 ~ F9]を押してmovie snapshotを作る。
+ smvファイルを再生している途中で、movie snapshotを作ったファンクションキー(F1 ~ F9のいずれか)を押します。
+ 再生モードが撮影モードに切り替わり、再録画が始まります。


* (発展)より完璧な動画を撮るには

エミュレータ動画を撮るための基本はすでに述べました。
しかし、これだけではとても[[TASvideos>http://tasvideos.org]]で発表されているような完璧な動画は撮れません。
基本操作に慣れてきたら、ぜひ以下の発展にトライしてみてください。

より完璧な動画を撮るには、以下のような方法があります。

- ゲーム速度を落として撮影する
- joy2keyを使って、ゲームを一旦ポーズしてから追記する
- エミュレータの連射機能を使う
- コマ送り(Frame Advance)を使う
- smvファイルを直接編集してより正確にプレイをする
- ゲーム速度を上げて動画確認を素早く行う
- 各種情報を表示させる
-- キー入力
-- 再生フレーム数
-- ゲーム内のタイム

** ゲーム速度を落として撮影するには

通常のゲーム速度でエミュ動画を撮影しても、プレイヤーの実力以上のモノは撮ることが出来ません。
逆にいえば、ゲーム速度を落としてしまえば、どんなプレイヤーでも実力以上の神動画が作れるということです。

snes9xには、ゲーム速度を変化させる機能がついています。
メニューにはありませんので、ショートカットキーで操作します。
よく使う機能なので、覚えておくと良いです。

snes9x-improvement9の場合:
|ゲーム速度を半分に落とす|「-」キーを押す(「ほ」のキー)|
|ゲーム速度を倍に上げる|「+」キーを押す(「れ」のキー)|

通常のsnes9xの場合:
|ゲーム速度を半分に落とす|Shift + 「-」キーを押す|
|ゲーム速度を倍に上げる|Shift + 「+」キーを押す|

撮影用に特化したsnes9x-improvement9では、ショートカットキーが簡略化されていることに注意します。

** JoyToKeyを使って、ゲームを一旦ポーズしてから追記するには

ただスローダウンしただけでは、うまく完璧な動画を撮ることは出来ません。
というのも、プレイの途中に必ず追記する作業があるからです。

追記するには[Shift + F1 ~ F9]を押さなくてはならず、そのためには一旦ゲームパッドから手を離す必要があります。
その際に、プレイのアイドル状態が出来てしまい、ツギハギのぎこちない動画しか取れません。
これを解消するには、一旦プレイをポーズした上で落ち着いて追記をしなくてはなりません。

|ゲームをポーズする|[Pause/break]キーを押す|

しかし、Pause/breakキーを押すにしてもやはり一旦ゲームパッドから手を離すことに変わりはありません。
このラグを無くすためには、ゲームパッドを握りながらゲームをポーズしなくてはいけません。

これを実現するのが、[[JoyToKey>http://www.vector.co.jp/soft/win95/util/se101657.html]]というソフトです。
このソフトは、ゲームパッドのボタン入力をキーボードのキーに置き換えることが出来ます。
これを使い、ゲームパッドの使っていないボタン(例えばR2 or L2)に[Pause/break]キーを割り当ててしまいます。
こうすれば、ゲームパッドを握りながらゲームをポーズすることが出来ます。

管理人は、 L2 ボタンに[Pause/break]キーを、 R2 ボタンに[tab]キーを割り当てています。

** エミュレータの連射機能を使うには

snes9xにはエミュレータ自身に、ボタンの連射機能が付いています。
非常に高速で正確なので、例えばミサイルの連射を最速で発射するにはとても便利です。
また、LRダッシュを使うときにもこれを利用すると便利です。
ちなみに、コントローラ側で連射すると、微妙にラグが生じて最速で連射することが出来ません。

連射に関して、snes9xは以下のショートカットキーを持っています。

|Aボタンの連射|Shift + PageDown|
|Bボタンの連射|Shift + End|
|Yボタンの連射|Shift + Home|
|Xボタンの連射|Shift + PageUp|
|Lボタンの連射|Shift + Insert|
|Rボタンの連射|Shift + Delete|

なおsnes9x-improvement9の場合、これ以外のボタンにも連射機能を持たせることができます。

** コマ送り(Frame Advance)を使うには

スローは正確にプレイする強力な武器です。
しかし、「ここのジャストタイミングで~をする」という時には不十分です。
スローのみを使っている限り、あてずっぽうでボタンを押し「~になってくれることを願う」感は否めません。

そういう時のため、コマ送り(Frame Advance)を使います。

|コマ送り|ポーズ中に[ / ]ボタン(Backspaceの左)を押す|

望みのキーを押しながらこの機能を使えば、次のフレームに望みの動きを作ることが出来ます。

** smvファイルを直接編集してより正確にプレイをするには

smvファイルがただ単にキー入力を保存しているだけなら、直接smvファイルを弄って完璧にすればいいじゃない、という発想があります。
実際にロックマンのTASでは、おそらくこのような方法を用いて最適な動きを実現しています。

しかし、残念ながら管理人はその辺のことについては良く知りません。
関連がありそうなトピックがTASvideosのフォーラムにあるので、興味のある人は覗いてみてはいかがでしょう。
http://tasvideos.org/forum/viewtopic.php?t=3835


** ゲーム速度を上げて動画確認を素早く行うには

smvファイルはシークサーチが出来ません。
これは、smvファイルがただ単にキーの入力だけを記録している、という理由によります。
つまり、始めっから順番に再生しない限り、見たいところまで進まないということです。

見たいところが随分先で、その前のプレイは見たくない。
そんなときは、早送り(Fast-Forward)機能を使います。
これは、ゲームの速度を最大限まで上げ、見たくないところをすっ飛ばしてくれる機能(要は早送り)です。

|早送り(Fast-Forward)モードにする|[Tab]キーを押す|

早送りの速度は、[Option]→[Settings]から変えることが出来ます。
また、[Tab]キーをトグルにするかどうかも変えることが出来ます。




** キー入力を表示させるには

他の人が作ったsmv動画を見ているとき、「ココの部分はどんなキーを入れてこの動きを作っているんだろう」と思うときがあります。そんなときに便利なのがこのキー入力表示機能です。
入力キーを画面に表示したいときは[,](カンマ)キーを押します。

|キー入力を表示させる|[,](カンマ)キーを押す|

** 再生フレーム数を表示させるには

動画の再生フレームは、動画のある場面を指定するときに便利です。
例えば「25000フレーム辺りではこのようなことをしているが、なんの意味があるのか」というように話すことが出来ます。

再生フレーム数を表示させるには、[.](ピリオド)キーを押します。

|再生フレーム数を表示させる|[.](ピリオド)キーを押す|

ただし、このフレーム表示はゲーム内時間とは全く関係がないことに注意してください。
この数字を元に、「この方法の方が~フレーム速い」という風に比べても意味がありません。
プレイのスピードを比べるにはゲーム内時間で比較する必要があります。

** スナップショットを撮るには

撮影には直接関係ありませんが、結構ワンシーンを画像として保存したいときがあるはずです。そういうときにはスナップショット機能を使いましょう。幸い、snes9xには一発ショートカットがプリセットされています。
スナップショットを撮るには[F12]キーを押します。画像はROMのあるフォルダに、PNG形式で直接保存されます。

|スナップショットを撮る|[F12]キーを押す|

** ゲーム内のタイムを表示させるには

前述の通り、プレイのスピードを比べるにはゲーム内時間で比較する必要があります。
ではゲーム内時間を任意のときに見るにはどうすればよいのでしょうか。

ゲーム内時間というものはメモリ上に記録されており、リアルタイムで変化しています。
ということは、メモリ内を覗いてゲーム内時間を直接見ればいいわけです。
しかし、これを覗くにはかなりのスキルが必要で、実は管理人も良く分かっていません。
ただ、最近簡単にゲーム内時間を見る方法が見つかったので、それについて書きます。

ゲーム内時間は以下のアドレスに記録されています。

- 7E09E0 - Hours 
- 7E09DE - Minutes 
- 7E09DC - Seconds 
- 7E09DA - Frame Count 

スーパーメトロイドの場合、1時間を越えることはまずないので、残りの三つの数値が重要になります。
そして、それぞれの数値をリアルタイムでsnes9xの画面に表示する方法があります。
手順は以下の通り

+ [Cheat]→[Search for New Cheats]を選択
+ スクロールをして、表示したい数値のアドレスを探す
+ 見つかったら、それをクリックで選択し、[Watch]ボタンを押す
+ 複数表示したければ、同様のことを繰り返す
+ OKを押すと、画面内に希望の数値がリアルタイムで表示されます。

[[gocha's TAS Labo>http://gocha.is.land.to/]]の[[Tools>http://gocha.is.land.to/page/Tools.html]]ページで公開されているSnes9x memory watcherを使うと、ゲームごとに監視する変数を設定したり、変数に対するコメントをつけたりすることができます。

* snes9x-improvement9 のショートカットキー一覧

前述のものと重複するかもしれませんが、snes9x-improvement9 のショートカットキー一覧を書いておきます。
なお、これらのショートカットキーはユーザー側で自由に変えることが可能です。

===========================
準備中…
===========================

* TAS動画の作り方講座

ニコニコ動画に良いTAS動画の作り方講座があったので転載。

#video(http://www.nicovideo.jp/watch/sm1205835)