atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
Akasin_Room
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
Akasin_Room
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
Akasin_Room
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • Akasin_Room
  • TonyuSystem動作軽量化法

Akasin_Room

TonyuSystem動作軽量化法

最終更新:2006年12月23日 07:45

akasi3

- view
だれでも歓迎! 編集

TonyuSystem動作軽量化法


プログラムの動作確認はしてないので参考程度に。

1.当たり判定を数フレームに1回に

アクション,シューティングゲーム等の当たり判定処理は通常毎フレーム行うが、
実はこれ、毎フレーム行う必要はない。
大抵の場合2,3フレームに一回で十分。
当たり判定の処理を減らすことでアクション,シューティング等、
多数のオブジェクトを使用し当たり判定を行うゲームの大幅な軽量化が見込める。

<効果>
当たり判定を2フレーム毎にすれば、当たり判定に要する処理量は1/2、
3フレーム毎にすれば、1/3となる。

<例:シューティングの当たり判定の軽量化>
Tonyu公式ページの「チュートリアル→シューティングゲーム→敵を破壊する」の最下部のプログラムを例に改良すると、
//Befor
while (y<$screenHeight) {
  y=y+2;
  for (t in $chars) {
    if ( t is Tama && crashTo(t) ) die();
  }
  if (crashTo($myChar)) $myChar.die();
  update();
}

//After
while (y<$screenHeight) {
  y=y+2; 
  if($frameCount%2==0){  //(←追加部分)2フレーム毎に当たり判定を行う
    for (t in $chars) {
      if ( t is Tama && crashTo(t) ) die();
    }
  }
  if (crashTo($myChar)) $myChar.die();
  update();
}



2.オブジェクト毎に$charsに相当する配列を作成

通常、全てのオブジェクトは、オブジェクト配列$charsのみに自動で格納・管理される。
このオブジェクト配列を必要に応じて複数作成することで
動作の軽量化が見込める場合がある。
例えばシューティングゲーム。
シューティングゲームは多くの場合、弾同士また敵同士の当たり判定は必要ない。
オブジェクト配列を複数使用することで、この判定をなくす事が可能。

なお、この方法を使用する際には、特定オブジェクトに対する管理を手動で行う必要がある。
特定オブジェクトに対する管理とは、
下の例で言うと、弾オブジェクト生成時に配列$tamaCharsに追加する処理、
弾オブジェクトの消滅時に配列$tamaCharsから取り除く処理である。
このような処理を行う必要があるため、上級者向けの方法である。

<効果>(下の例の場合)
弾20個,機体10個の場合、全体の当たり判定の処理量(for(t in xx)ループ回数)は、
  • 通常法 :10オブジェクト×(10+20)回=300回
  • 軽量化法:10オブジェクト×20回    =200回
(注:弾に対する当たり判定処理を機体側で行う)

<例:シューティングの当たり判定の軽量化(1の例を流用)>
弾のオブジェクトを格納する配列($tamaCharsとする)を用意する。
while (y<$screenHeight) {
  y=y+2; 
  for (t in $tamaChars) { //(←変更部分)弾に対してのみ当たり判定を行う
    if ( crashTo(t) ) die();
  }
  if (crashTo($myChar)) $myChar.die();
  update();
}


と、ここまで書いて気付いた。これあんまり意味ないです。
弾幕系ゲームで弾同士の判定をなくせれば軽くなると思い書いたのだけど、
ここに書いた様なややこしい事しなくても、
機体側で弾に対する当たり判定処理を行えば弾同士の判定は行われません。
つまり、それだけで良い。
まあ、それに加えてここに書いたこともやれば、ある程度軽くなります。



3.メニュー表示などにパネルを使用する

RPGなどにあるメニュー。
このメニューの描画には、いくつもの文字や画像の描画処理が必要になり、
draw系関数で毎フレーム描画する方法では処理がかなり重くなる場合がある。
そこでパネルを使用する。
パネルは一度描画すれば、描画されたものは消えないため、
(パネルの上書きやパネル自体が消滅しない限り)
メニューの様に持続的に表示されるものを効率よく表示することが出来る。
うまく使えばかなりの軽量化が可能。

<効果>
未知数

<例>
//Befor
menu=new Array();
menu.add("< メニュー >");
menu.add("名前:nanasi");
menu.add("Lv:1");
menu.add("HP:20");
while(1){
  fillRect(0,0,120,100,$clWhite,1);
  for(i=0;i<menu.size();i++){
    drawText(10,10+20*i,menu.get(i),$clBlack,15);
  }
  update();
}

//After
menu=new Array();
//(略)
resize(120,100);
panel.fillRect(0,0,getWidth(),getHeight(),$clWhite);
for(i=0;i<menu.size();i++){
  panel.drawText(10,10+20*i,menu.get(i),$clBlack,15);
}
wait(); //dieしない様に止めておく

タグ:

+ タグ編集
  • タグ:
タグの更新に失敗しました
エラーが発生しました。ページを更新してください。
ページを更新
「TonyuSystem動作軽量化法」をウィキ内検索
LINE
シェア
Tweet
Akasin_Room
記事メニュー

MENU

  • TopPage.
  • Product(別館)
    • TRogue
    • その他
  • Weblog
  • BBS
  • Links





■


更新履歴

取得中です。

[ more old ]


Total: - /today: -



記事メニュー2

人気記事ランキング
  1. Diary/2006年06月01日
  2. BBS-BBS/16
  3. BBS-BBS/38
  4. Diary/2006年11月01日/改めて思う
  5. Diary/2006年01月21日
もっと見る
最近更新されたページ
  • 5292日前

    Diary/2010年08月10日/昔の"記憶"
  • 5312日前

    Diary/2011年03月15日/◆地震に役立つ情報
  • 5312日前

    Diary/2011年03月15日/情報を(必要以上に)取り入れないという選択
  • 5312日前

    Diary/2011年03月15日
  • 5312日前

    Links
  • 5314日前

    Diary/2011年03月13日/生存報告
  • 5315日前

    Diary/2011年03月13日
  • 5523日前

    Diary/2010年08月17日/PC購入
  • 5523日前

    Diary/2010年08月17日
  • 5530日前

    Diary/2010年08月10日
もっと見る
人気記事ランキング
  1. Diary/2006年06月01日
  2. BBS-BBS/16
  3. BBS-BBS/38
  4. Diary/2006年11月01日/改めて思う
  5. Diary/2006年01月21日
もっと見る
最近更新されたページ
  • 5292日前

    Diary/2010年08月10日/昔の"記憶"
  • 5312日前

    Diary/2011年03月15日/◆地震に役立つ情報
  • 5312日前

    Diary/2011年03月15日/情報を(必要以上に)取り入れないという選択
  • 5312日前

    Diary/2011年03月15日
  • 5312日前

    Links
  • 5314日前

    Diary/2011年03月13日/生存報告
  • 5315日前

    Diary/2011年03月13日
  • 5523日前

    Diary/2010年08月17日/PC購入
  • 5523日前

    Diary/2010年08月17日
  • 5530日前

    Diary/2010年08月10日
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. 遊戯王2ch本スレWiki
  2. PC版Webサカ@ ウィキ
  3. 千鳥の鬼レンチャン サビだけカラオケデータベース
  4. 鬼レンチャンWiki
  5. 錬金術2021 パズル 攻略wiki
  6. asagaolabo @ ポップン百科大事典
  7. "The Planet Crafter" 非公式日本語Wiki
  8. 番組スポンサー 詳しく! @ ウィキ
  9. ヌカづけ◎日本語コンシューマ版「Fallout」wiki
  10. メダロット辞典@wiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 発車メロディーwiki
  6. モンスター烈伝オレカバトル2@wiki
  7. 検索してはいけない言葉 @ ウィキ
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. オレカバトル アプリ版 @ ウィキ
  10. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. シュガードール情報まとめウィキ
  3. まどドラ攻略wiki
  4. 戦国ダイナスティ攻略@ウィキ
  5. ちいぽけ攻略
  6. SurrounDead 攻略 (非公式wiki)
  7. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  8. 20XX @ ウィキ
  9. Dark War Survival攻略
  10. 魔法少女ノ魔女裁判 攻略・考察Wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. 鬼レンチャン(レベル順) - 鬼レンチャンWiki
  3. 信じていた仲間達にダンジョン奥地で殺されかけたがギフト『無限ガチャ』でレベル9999の仲間達を手に入れて元パーティーメンバーと世界に復讐&『ざまぁ!』します! - アニヲタWiki(仮)
  4. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  5. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  6. コメント/雑談・質問 - マージマンション@wiki
  7. 櫛田桔梗 - アニヲタWiki(仮)
  8. 機動戦士ガンダム サンダーボルト - アニヲタWiki(仮)
  9. パナマ運河 - アニヲタWiki(仮)
  10. ミッション攻略 - 地球防衛軍6 @ ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.