Web Analytics

ark

⭐ 222 stars French by mlange-42

Logo Ark

Statut des tests codecov Go Report Card Guide de l'utilisateur Référence Go GitHub DOI:10.5281/zenodo.14994239 Licence MIT Licence Apache 2.0 Mentionné dans Awesome Go

Ark est un Entity Component System (ECS) basé sur des archétypes pour Go.

——

Fonctionnalités   •   Installation   •   Utilisation   •   Outils

Fonctionnalités

Installation

Pour utiliser Ark dans un projet Go, exécutez :

go get github.com/mlange-42/ark

Utilisation

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 main

import ( "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

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 ---