Características
- Diseñado para rendimiento y altamente optimizado. Vea los Benchmarks.
- API bien documentada y segura en tipos, y una completa Guía del usuario.
- Relaciones entre entidades como característica de primera clase.
- Sistema de eventos extensible con filtrado y tipos de eventos personalizados.
- Operaciones en lote rápidas para manipulación masiva.
- Sin sistemas. Solo consultas. Use su propia estructura (o las Herramientas).
- Serialización y deserialización del mundo con ark-serde.
- Cero dependencias, 100% de cobertura de pruebas.
Instalación
Para usar Ark en un proyecto de Go, ejecute:
go get github.com/mlange-42/arkUso
A continuación se muestra el ejemplo clásico de Posición/Velocidad que todos los ECS muestran en la documentación.
Consulte la Guía del Usuario, la documentación API y los ejemplos para más detalles.
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
}
}
}
Herramientas
- ark-serde proporciona serialización y deserialización JSON para Ark's World.
- ark-tools ofrece sistemas, un programador y otras utilidades para Ark.
- ark-pixel proporciona gráficos OpenGL y gráficos en vivo mediante el motor de juego Pixel.
Citar como
Lange, M. & colaboradores (2025): Ark – Un sistema de componentes de entidad basado en arquetipos para Go. DOI: 10.5281/zenodo.14994239, Repositorio GitHub: https://github.com/mlange-42/ark
Licencia
Ark y todos sus códigos fuente y documentación se distribuyen bajo la licencia MIT y la licencia Apache 2.0, según su preferencia.
--- Tranlated By Open Ai Tx | Last indexed: 2026-03-03 ---