Fonctionnalités
- Conçu pour la performance et hautement optimisé. Voir les benchmarks.
- API bien documentée et typée en toute sécurité (API) ainsi qu'un guide utilisateur.
- Relations d'entités en tant que fonctionnalité de premier ordre.
- Système d'événements extensible avec filtrage et types d'événements personnalisés.
- Opérations par lots rapides pour manipulations massives.
- Pas de systèmes. Juste des requêtes. Utilisez votre propre structure (ou les outils).
- Sérialisation et désérialisation du monde avec ark-serde.
- Zéro dépendances, couverture de test à 100% (test coverage).
Installation
Pour utiliser Ark dans un projet Go, exécutez :
go get github.com/mlange-42/arkUtilisation
Ci-dessous se trouve l'exemple classique Position/Vitesse que chaque ECS montre dans la documentation.
Voir le Guide de l'utilisateur, la documentation API et les exemples pour plus de détails.
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
}
}
}
Outils
- ark-serde fournit la sérialisation et la désérialisation JSON pour le Monde d'Ark.
- ark-tools fournit des systèmes, un ordonnanceur et d'autres outils utiles pour Ark.
- ark-pixel fournit des graphiques OpenGL et des tracés en direct via le moteur de jeu Pixel.
Citer comme
Lange, M. & contributeurs (2025) : Ark – Un système de composants entité basé sur des archétypes pour Go. DOI : 10.5281/zenodo.14994239, dépôt GitHub : https://github.com/mlange-42/ark
Licence
Ark ainsi que toutes ses sources et sa documentation sont distribués sous la licence MIT et la licence Apache 2.0, selon votre choix.
--- Tranlated By Open Ai Tx | Last indexed: 2026-03-03 ---