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

Akasin_Room

Tonyu軽量化作戦

最終更新:2006年09月05日 23:28

Bot(ページ名リンク)

- view
メンバー限定 登録/ログイン
#blognavi
TonyuBBSで話題に上がった
「一つのオブジェクドにforを使わせ・・・」
ということにヒントを得て、
Tonyuの動作を軽量化するライブラリを作ってみました。
思った以上の軽量化に成功。

以下にその詳細を記します。
以下、プログラムに興味がない人にとっては
面白くもなんともない話が続きます。

 - -
Tonyuでは(Tonyuに限らないが)、
「全てのオブジェクトを調べる」という処理がよくある。
例えば、シューティングで敵が弾に当たっているかどうか、
アクションで、自キャラが敵に当たっているかどうか。
で、そんなよく使う処理が実はとても重い。

例えば弾幕系シューティングなんかでは、
オブジェクト(弾やキャラクタ)の数は100を平気で超えるが、
その全てが「全てのオブジェクトを調べる」という処理を行った場合、
単純計算で”100×100=10000”という膨大な処理量になる。
(当然ながらオブジェクトが増えれば増えるほど処理は多くなる)
そして、Tonyuの処理速度はそれほど速くないため、
その様な処理を行うゲームを作るのは困難。


で、少し前にTonyuサイトのBBSにも似た話題が挙がっていて、
その中の、
「一つのオブジェクドにforを使わせ・・・」と、
「#先日話題に上った『マップ座標系でのオブジェクトの位置をあらかじめ求めておく』話とかも・・・」
という言葉でピンときた。
「予め、ある程度近いオブジェクトだけでも分かれば、高速に処理できる」

”ある程度近いオブジェクト”を高速に求める方法はある。
それは、画面座標に対応した2次元配列を使う方法。
例えば、先ず座標の0~9は配列の0番、座標10~19は配列の1番、というように対応付ける。
そして、各オブジェクトを配列の対応する位置に格納する。
そうして、全オブジェクトを格納すると、
近い位置にあるオブジェクト同士は配列内で近い位置に格納されている
という仕組み。
(これは以前ミスティックロンドの高速化に使用した手法と似ている)
(人間ならぱっと見で分かるものでも、コンピュータにはここまでしないと分からない。難儀な)

そうして、”ある程度近いオブジェクト”を求めたら後は簡単。
近い場所にいるオブジェクトを配列から取得し、
その中から、必要な処理(衝突判定等)を行えばいい。
こうして軽量化が完了する。


ただ、途中省略したが、
この手法は「”ある程度近いオブジェクト”に対する処理(ex.衝突判定)」にしか使用できない。
つまり、「”遠距離にいるオブジェクト”にも行う必要がある処理(ex.誘導弾)」には使えない。
これは大きな問題。



もっと上手い方法を御存知の方、
ありましたら御一報を。


 - - - -
せっかくなので、簡単な軽量化手法を一つ紹介。

全てのオブジェクトを調べる必要がある処理(接触判定等)の多くは、
実はその処理を毎フレーム行う必要はない。
数フレームに一度実行するだけで十分。
案外知らない人も多いのでは。

自分が上で懸命に作ったライブラリを使うより、
この手法の方が、圧倒的に手軽で確実。
お勧め。



カテゴリ: [ゲーム制作] - &trackback() - 2006年09月05日 11:53:41
  • し、知らなかった。為になります。 -- 少佐 (2006-09-05 23:28:15)
名前: コメント:
#blognavi
「Tonyu軽量化作戦」をウィキ内検索
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日/生存報告
  • 5314日前

    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日/生存報告
  • 5314日前

    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.