表示パターン
フリースタイル その他

ECSEngine_NextLevel

EntityComponentSystemを取り入れた独自のゲームエンジンです。1番の特徴はコンポーネントをポインタで管理せず連続したメモリ配置にすることで、ヒット率が高い設計にしています。

Osakazyuuzi
シミュレーション 個人制作DirectX独自エンジン
閲覧 -- 応援 --

Introduction

作品紹介

独自のエンジンとして特化を目指したのはパフォーマンスで、工夫したところは4つあります。 1つ目はECSの設計です。データと処理を分離することで高速かつ汎用性が高い設計を目指しました。 2つ目はコンポーネントの管理方法です。ポリモーフィズムを利用する方法でのポインタ先を参照する過程で生まれるキャッシュミスが気になり、コンポーネントをポインタで管理しない設計、メモリが連続する設計を作成しました。また、エンティティーはビットでコンポーネントの所持を高速で判断できるようにしました。 3つ目はエンティティーの管理方法です。コンポーネントと同じようにポインタで管理しない設計しました。他にもエンティティの配列番号を上位ビットに、要素のバージョンを下位ビットにと組み合わせた識別ビットを使用し管理する設計です。 4つ目はマルチスレッド関係です。エンティティの生成やコンポーネントの追加など異なるスレッドにて問題が出る処理をコマンドとして登録し、シングルスレッドにてそれらの処理を行うようにし、問題なくマルチスレッドが行えるようにしました。 これらのパフォーマンスに特化することに加えて、エディターを表示したり、ワールドやアセットのシリアライズやデシリアライズを行ったりすることで、エンジンとしてのクオリティを上げることを工夫しました。

Gallery

スクリーンショット

Policy

実況・二次利用

ゲーム実況
不可