UIを作れるぐらい根幹システムが出来上がり、半分終わったような気持ちで居たのですが、
いざ、敵機を50機ほど出してみたらFPSが50を切ってしまいました!
100機ほど出してみたら37FPSほどです。
勿論、更新処理をしているオブジェクトは敵機の数+背景オブジェクトぐらいしかありません。
実際に敵機を50機も100機も出す予定はないのですが、機銃やミサイル、それに追従する煙などの3Dオブジェクトの数を考えたら
これぐらいのオブジェクト数でFPSが落ちてしまっていては型なしです。
そこで、ゲーム処理の軽量化考えているのですが3Dゲームの作成は初めてなのでイマイチどこらへんが重いかわかりません。
ご指摘お願いします。
1フレーム中に回す処理一覧です。(コードそのままですが
//登録初期化
//描画リストをリセット
CDrawList::GetInstance()->Reset();
//ロックオンターゲットリストをリセット
CTargetObjectList::GetInstance()->Reset();
//一過性オブジェクトリストの要素の寿命をチェック
CTransientObjectList::GetInstance()->LifeCheck();
//登録
//キャラクターが各種リストにEntry
for(size_t i=0;i<CharacterControlList.size();i++){
CharacterControlList[i]->Entry(); //←ここをsize=50ぐらいにするとFPSが50ほどに下がってしまう
}
//一過性オブジェクトリストの要素が各種リストにEntry
CTransientObjectList::GetInstance()->Entry();
//衝突判定通知
CCollisionDetectionList::GetInstance()->Run();
//3DUIのZバッファ登録
CDrawUI::GetInstance()->Entry3D();
//更新
//キャラクターのアップデート
for(size_t i=0;i<CharacterControlList.size();i++){
CharacterControlList[i]->Update(); //←ここをsize=50ぐらいにするとFPSが50ほどに下がってしまう
}
//一過性オブジェクトのアップデート
CTransientObjectList::GetInstance()->Update();
//ステージのアップデート
FieldStage->Update();
//カメラのアップデート
CCamera::GetInstance()->Update();
//描画
//描画
CDrawList::GetInstance()->Draw();
CDrawUI::GetInstance()->Draw2D();
だったら1フレームに1度リセットして、必要なフレームで毎回登録しようと考えたのですが、裏目に出たのでしょうか・・・(´・ω・`)
ちなみに一過性オブジェクトリストという名のリストは、ゲームループ中で生成され削除されるオブジェクトです。
なので、ゲーム開始時にインスタンス化された敵機による負荷とかかわっていません。

