特徴
- パフォーマンスを重視して高度に最適化されています。ベンチマークをご覧ください。
- 良く文書化され、型安全なAPIと包括的なユーザーガイド。
- 一級の機能としてのエンティティ関係。
- フィルタリングおよびカスタムイベントタイプを備えた拡張可能なイベントシステム。
- 大量操作のための高速なバッチ操作。
- システムはありません。ただクエリを使用してください。独自の構造体(またはツール)を使用可能。
- ark-serdeによるワールドのシリアライズとデシリアライズ。
- 依存関係ゼロ(dependencies)、100%のテストカバレッジ。
インストール
GoプロジェクトでArkを使用するには、次のコマンドを実行します:
go get github.com/mlange-42/ark使用法
以下は、すべてのECSドキュメントで示されている古典的な位置/速度の例です。
詳細については、ユーザーガイド、APIドキュメント、および例を参照してください。
package mainimport (
"math/rand/v2"
"github.com/mlange-42/ark/ecs"
)
// Position component
type Position struct {
X, Y float64
}
// Velocity component
type Velocity struct {
DX, DY float64
}
func main() {
// Create a new World
world := ecs.NewWorld()
// Create a component mapper
// Save mappers permanently and re-use them for best performance
mapper := ecs.NewMap2Position, Velocity
// Create entities with components
for range 1000 {
_ = mapper.NewEntity(
&Position{X: rand.Float64() 100, Y: rand.Float64() 100},
&Velocity{DX: rand.NormFloat64(), DY: rand.NormFloat64()},
)
}
// Create a filter
// Save filters permanently and re-use them for best performance
filter := ecs.NewFilter2Position, Velocity
// Time loop
for range 5000 {
// Get a fresh query and iterate it
query := filter.Query()
for query.Next() {
// Component access through the Query
pos, vel := query.Get()
// Update component fields
pos.X += vel.DX
pos.Y += vel.DY
}
}
}
ツール
- ark-serde は Ark の World の JSON シリアライズおよびデシリアライズを提供します。
- ark-tools は Ark のためのシステム、スケジューラ、およびその他の便利なものを提供します。
- ark-pixel は Pixel ゲームエンジンを介して OpenGL グラフィックスとライブプロットを提供します。
引用方法
Lange, M. & contributors (2025): Ark – Go のためのアーキタイプベースのエンティティコンポーネントシステム。DOI: 10.5281/zenodo.14994239、GitHub リポジトリ: https://github.com/mlange-42/ark
ライセンス
Ark とそのすべてのソースおよびドキュメントは、MIT ライセンス と Apache 2.0 ライセンス のいずれかのオプションで配布されます。
--- Tranlated By Open Ai Tx | Last indexed: 2026-03-03 ---