SAIさんへ。リプレイデータ保存機能できたよー。

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

SAIさんへ。リプレイデータ保存機能できたよー。

投稿記事 by MoNoQLoREATOR » 14年前

はい。できました。
生放送ではSAIさん、ROTOさん、大変お世話になり本当にありがとうございました。
VCのデバッグ機能の使い方がやっとわかりました(爆笑)

ソースと実行ファイルを下記にアップしましたのでどなたでもご自由にお使いください。リリースビルドしているので、使用する際は相対パスの設定にお気を付けください。
http://www1.axfc.net/uploader/Sc/so/272 ... key=replay


さて、解説です。
概要を説明します。

リプレイデータを保存(今回は「キー状態が変更されたのが何フレーム目か」・「どのキー状態が変更されたか」という情報を保存)

リプレイデータを読み込み

リプレイデータに応じて自機を移動させたりする

もう少し詳しく説明します。

//キー操作
z・・・ショット(面倒くさいので未実装)
x・・・低速移動
c・・・ボム
十字キー・・・各移動

//リプレイデータを保存するタイミングについて
1つ前のフレームのキー入力状態を記憶しておき、現在のキー入力状態と比較して変更があればそのキーを保存します。そのため寸分の狂いなく全く同時にキーが押された場合はバグります。TAS対策ということにしておきましょう。

//リプレイデータに応じて自機を移動させたりする処理について
「リプレイデータからのキー状態変更」のみを受け付ける変数を用意し、ユーザーからのキー入力状態の受付終了後にキー状態をコピーすれば、あとは普段通りの処理をするだけで済みます。そうしないとリプレイ時にキー入力があるとめちゃくちゃになります。


近い未来に、徹底的に解説した動画でもつくろうかなと思っています(´・ω・)
では、良いプログラミングライフを。

アバター
SAI
記事: 115
登録日時: 14年前

Re: SAIさんへ。リプレイデータ保存機能できたよー。

投稿記事 by SAI » 14年前

私のコードのなにが変かわかりました!
私の場合、一度メモリに保存して、最後にまとめて記録しようとしているためサイズが小さくて済んでるみたいです。
でも長くなることを考えると全てをメモリに保存するのはあまり得策とは言えない気がします。
というわけでビット演算を使わせていただきます。
お騒がせしてしまい申し訳ありません m(_ _)m

・・・ビット演算の勉強しないとな・・・。

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

Re: SAIさんへ。リプレイデータ保存機能できたよー。

投稿記事 by MoNoQLoREATOR » 14年前

>>ISLeさん
変化があったらinbitsと変化した時のフレームを記録していけば良いですね。
同時押しに対応するため、現在はその仕様になっています。(もっとも、私はbool型配列変数を使用していますが)あと少し機能を追加して、バグが解決すればまた投稿する予定です。