メイン FLASHおもちゃ箱【ゲームについてあれこれ】 背景スクロールのスピード | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
テライユタカ | Åê¹ÆNo.13468 投稿日時: 2004-12-19 14:16 |
常連 居住地: わかやま 投稿: 88
使用環境:
iMac G5 10.4.9 + iBook G4 10.3.9 + Flash8 |
背景スクロールのスピード こりずにまたRPG作ってます。
背景のスクロールスピードについて、ちょっと気になることが発生しました。 どうしようか悩んでます。助言いただければ幸いです。 【制作状況】 30×30ピクセルのマップチップを作り、多数並べて背景としてスクロールさせているのですが、マップチップをムービークリップに変換したものを使用するより、GIF画像そのままの方がスクロール処理が速いのです。 動作確認のため、Scriptは同じで、背景のみ差し替えたものを作成し、背景の一番上から一番下まで移動した時間をストップウォッチで計りました。 【動作環境】 Flash MX 2004にて作成 eMac 700MHz、RAM:768MB、OS:MacOS 10.3.7 以下、ビットマップの背景を使用…BM、ムービークリップに変換した背景を使用…MCで記載。 ただし多少の誤差はあると思います。 また、会社のWindowsXP Pro、PentiumM1.4G、RAM:512では、ほとんど違いは計測できませんでした。(たぶん高速すぎるため) 1.SAFlashPlayerで動かした場合 BM:7.5sec MC:9.2sec 2-1.SWFファイルをSafariで動かした場合 BM:8.4sec MC:8.4sec 2-2.SWFをIEで動かした場合 BM:8.8sec MC:9.1sec ファイル: BM:http://www2.ocn.ne.jp/~alpha/speed_bm.html MC:http://www2.ocn.ne.jp/~alpha/speed_mc.html 3.SWFよりプロジェクタを作成し動かした場合 (上記が最終配布目的です) MB:7.4sec MC:9.5sec ファイル:http://www2.ocn.ne.jp/~alpha/SpeedTest.zip 参考にFlashファイル:http://www2.ocn.ne.jp/~alpha/SpeedTestFla.zip 以上の結果から、MCに変換せずに使用した方が良いのでしょうか?
|
空野大二郎 | Åê¹ÆNo.13471 投稿日時: 2004-12-19 17:42 |
職人 居住地: 愛知 投稿: 389
使用環境:
XP:Home FlashMX IE6.0+FlashPlayer7,0,19 CPU:Pentium4 2.26GHz メモリ:1,024MB |
Re: 背景スクロールのスピード まいど。
差を確認しました。(スピードが見られなかったためCPU負荷で) CPU使用率(平均値) BM:22% MC:66% 環境: CPU: Pentium 4-2.26GHz メモリ: 1GB GPU: GeForce FX5200 128MB OS: WindowsXP Home SP2 ブラウザ:Internet Explorer 6.0.29 プラグインバージョン:FlashPlayer 7.0.19 引用:
なぜ? ともかく、これだけの差を知れば、ビットマップをそのまま使う 魅力があります。 (参考ファイル、Flash7形式ですから構造を確認していませんが)
|
テライユタカ | Åê¹ÆNo.13493 投稿日時: 2004-12-20 12:19 |
常連 居住地: わかやま 投稿: 88
使用環境:
iMac G5 10.4.9 + iBook G4 10.3.9 + Flash8 |
Re: 背景スクロールのスピード 引用:
差を確認しました。(スピードが見られなかったためCPU負荷で) そうですよね、CPU負担で調べるってのが一番確実で手っ取り早いですよね。 気づきませんでした。 で、結果CPU使用率(だいたいの平均) eMac 700MHz RAM:768MB MacOS10.3.7 BM:82% MC:98% PentiumM 1.4GHz RAM:512BM Windows XPpro BM:16% MC:59% やっぱぜんぶビットマップで作り直した方が良さそうですね?。 でも、なんでだろ?う?
|
空野大二郎 | Åê¹ÆNo.13494 投稿日時: 2004-12-20 12:46 |
職人 居住地: 愛知 投稿: 389
使用環境:
XP:Home FlashMX IE6.0+FlashPlayer7,0,19 CPU:Pentium4 2.26GHz メモリ:1,024MB |
Re: 背景スクロールのスピード まいど。
よろしければ、構成を教えていただけませんか? (こんなかんじかしら?640*480、12fpsにて) 1:マップチップをムービークリップに変換したものを使用 _root.map1_mc └─mapChip_mc(複数) └─mapChip.gif (CPU使用率:22%) 2: GIF画像そのまま _root.map1_mc └─mapChip.gif(複数) (CPU使用率:35%) 引用: テライユタカさんは書きました:
|
テライユタカ | Åê¹ÆNo.13495 投稿日時: 2004-12-20 13:08 |
常連 居住地: わかやま 投稿: 88
使用環境:
iMac G5 10.4.9 + iBook G4 10.3.9 + Flash8 |
Re: 背景スクロールのスピード はい。そのとおりです。
いろいろテスト中で14fpsになっていました。 1:マップチップをムービークリップに変換したものを使用 _root.town1_mc ├chara_mc(キャラクター3人) └─mapChip_mc(複数 横24*縦34) └─mapChip.gif 2:GIF画像そのまま _root.town1_mc ├chara_mc(キャラクター3人) └─mapChip.gif(複数 横24*縦34) です。 ActionScriptは全て_rootのフレームに記述しています。
|
空野大二郎 | Åê¹ÆNo.13497 投稿日時: 2004-12-20 14:31 |
職人 居住地: 愛知 投稿: 389
使用環境:
XP:Home FlashMX IE6.0+FlashPlayer7,0,19 CPU:Pentium4 2.26GHz メモリ:1,024MB |
Re: 背景スクロールのスピード まいど。
うぬう、こちらも14fpsで再度測定してみました。 スクリプトは単純に、onClipEvent(enterFrame)で_root.map1_mcの _x位置を+15ずつにして表示させています。 _root.map1_mc └─mapChip_mc(複数) └─mapChip.gif (CPU使用率:25%) 2: GIF画像そのまま _root.map1_mc └─mapChip.gif(複数) (CPU使用率:40%) この条件では、2のGIF画像そのままの方が負荷が高いという 結果になっております。 テライユタカさんのテストファイルも、背景の位置を移動させて、 キャラクターも中央に表示させているでしょうから、単純には同じ 結果が得られると考えていたのですが、どうにも違うようですね。 動作の差を突き詰めるなら、テスト環境をもう少し分解してみる 必要があると考えられます。 <例> 1:現在の状態 2:キャラクタの移動を排除 3:キャラクタの移動、キャラクタのグラフィックを排除 4:mapChip_mcのmapChip.gif、またはmap1_mcのmapChip.gifを 排除(mapChip_mcがあるかないかで、動作の差が発生するのか検証) 5:mapChip_mc.mapChip.gifではなく、mapChip.mapChip.gif (グラフィックとして格納)も測定 影響している(と思われる)部分を排除して測定することで、 問題を絞り込めます。 得られた結果から、動作原理を推測して、適切な判断を下せる ようになる、かも知れません。(でも、時間がかかります。) 時間と労力とに相談しながら、ご判断下さい。
|
テライユタカ | Åê¹ÆNo.13507 投稿日時: 2004-12-20 17:28 |
常連 居住地: わかやま 投稿: 88
使用環境:
iMac G5 10.4.9 + iBook G4 10.3.9 + Flash8 |
Re: 背景スクロールのスピード 引用:
この条件では、2のGIF画像そのままの方が負荷が高いという 空野さん、貴重なお時間を割いていただき、どうもです。 う?ん、ますますわからなくなってきました。 空野さんの書かれているように、すべての要因を分解して検証してみました。 1:新規に2つのファイルを作成 ファイル名:speedTestBM.fla _root.map1_mc └mapChip.gif(複数) ※mapChip_mcは作成しない状態で検証 ファイル名:speedTestMC.fla └mapChip_mc └mapChip.gif gif画像は30*30pixel新規に作成 両ファイルとも横20*縦30個配置 キャラなどの余計なファイルは何も作成していません ライブラリ内は BM:map1_mc、mapChip.gifのみ MC:map1_mc、mapChip_mc、mapChip.gifのみ キーのUPで上にスクロール、DOWNで下にスクロールさせるため、メインフレームに以下のScriptを記載 onEnterFrame = function () { if (Key.isDown(Key.DOWN)) { this.map1_mc._y -= 10; else if (Key.isDown(Key.UP)) { this.map1_mc._y += 10; } } で結果 BM:15% MC:38% なお、ファイルMCをムービークリップからグラフィックに変換しても、差はないように思われました。 また、MX形式で保存し、Player6形式でも書き出してみましたが、同じ結果でした。 なんで?なんで??BMの方が負荷が小さいの?
|
空野大二郎 | Åê¹ÆNo.13512 投稿日時: 2004-12-20 20:18 |
職人 居住地: 愛知 投稿: 389
使用環境:
XP:Home FlashMX IE6.0+FlashPlayer7,0,19 CPU:Pentium4 2.26GHz メモリ:1,024MB |
Re: 背景スクロールのスピード まいど、だいぶん分かってきました。
[総合評価] Key.isDown()関数を使う場合は、MovieClip数を減らし、 ビットマップをそのまま貼り付けることに効果があると 判明しました。 引用: テライユタカさんは書きました: [ケース1] テライユタカさんと同じように、onEnterFrameのときにキー操作で マップを移動させるようにしました。
すると、次のような結果になりました。 BM:35% MC:79% [ケース2] 続いて、mapChip.gifを削除した状態で、キー操作でマップ移動 させてみました。 構成 >BMのばあい _root.map1_mc(中身は空) >MCのばあい _root.map1_mc(中身はmapChip_mcをマップチップの座標に複数 配置) └mapChip_mc(中身は空) 結果 BM:5% MC:40% [ケース3] さらに、確認のためにmapChip.gifを削除した状態で、 onClipEvent(enterFrame)ごとの座標移動を実行
結果 BM:5% MC:5% [ケース4] さらにさらに、onClipEvent(enterFrame)による、キー操作の マップ移動を試行。
BM:35% MC:79% [中間評価] [ケース1]と[ケース2]により、Key.isDown()関数と、 複数の入れ子になっているMovieClipに因果関係があることが 分かります。 また[ケース3]により、Key.isDown()関数を介さない MovieClipの移動には、入れ子が複数のMovieClipであっても、 そうでなくても、グラフィックの描画にだけ負荷がかかっている ことが分かります。 ([ケース1]と[ケース4]との比較で、onClipEvent (enterFrame)とMovieClip.onEnterFrameの処理には、CPU負荷の 大きな差は見られないことが分かります) [ケース5] その上さらに、[ケース1]を、マップ移動なしの状態で 検証しました。(キーを押して、キー入力だけを検知させる)
結果 BM:5% MC:55% [最終評価] まさかの結果です! Key.isDown ()関数は、ステージ上のMovieClipの数が増えると、 それに比例してCPU負荷が高くなることが分かりました。 (これは推測になりますが、Key.isDown ()関数は、指定した キーが押されているかどうかを調べるリアルタイム実行型の 関数なので、動作原理としてステージ上のMovieClipについても 何かを調べている、もしくはMovieClipの再描写を行っている 可能性があります。 Key.isDown ()関数に詳しい方がいらしたら、わたしにも教えて下さい。)
|
テライユタカ | Åê¹ÆNo.13529 投稿日時: 2004-12-21 12:27 |
常連 居住地: わかやま 投稿: 88
使用環境:
iMac G5 10.4.9 + iBook G4 10.3.9 + Flash8 |
Re: 背景スクロールのスピード 引用:
結果 おどろきの結果です! 空野さんの結果をもとに、Key.isDown()を使わずに onClipEvent(keyDown){ if(Key.getCode()==38){ this._y += 1; }else if(Key.getCode()==40){ this._y -=1; } } をmap1_mcに記述して調査しましたが、結果は BM:15% MC:38% という結果でした。 Key.isDown()だけがCPU負担が高いって訳ではなく、Key関数がしんどいみたいですね。 やっぱRPG作るのなら、GIF画像のままの方がいいように思えてきました。 どなたかKey関数に詳しい方いらっしゃいましたら、ぜひお知恵を。
|
空野大二郎 | Åê¹ÆNo.13546 投稿日時: 2004-12-21 18:53 |
職人 居住地: 愛知 投稿: 389
使用環境:
XP:Home FlashMX IE6.0+FlashPlayer7,0,19 CPU:Pentium4 2.26GHz メモリ:1,024MB |
Re: 背景スクロールのスピード まいど。
onClipEvent(keyDown)もですか。 引用:
もしやと思い、[ケース1]でマウスの動きだけを調べる スクリプトにすると、やはりMovieClipが多いほうがCPU負荷が 高くなっています。
BM:5% MC:30%
BM:5% MC:27% キーやマウスなどリアルタイムに動作を受け取る場合は、 ステージ上のMovieClip(たぶんオブジェクトすべてと思う)の 数が少ない方が、CPU負荷が低く抑えられるようです。 (グラフィック描画とはべつに) インタラクティブなコンテンツ作りには、重要になる結果だと 考えられます。
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |