openage Logo
  • Building & Installation
    • Basic Installation
      • Linux Installation
      • Windows Installation
      • macOS Installation
    • Building the project
      • Dependencies
        • Package Instructions
        • Prerequisite steps for Arch Linux users
        • Prerequisite steps for Debian Sid users
        • Prerequisite steps for Fedora users (Fedora >= 27)
        • Prerequisite steps for FreeBSD users
        • Installation for Gentoo users
        • Prerequisite steps for openSUSE users (openSUSE 13.2)
        • Prerequisite steps for openSUSE users (openSUSE Tumbleweed)
        • Instructions for Mac OS X users (OS X 10.14 Mojave)
        • Prerequisite steps for Ubuntu users (Ubuntu 18.04)
        • Procedure for Microsoft Windows users (Windows 10)
      • Building nyan
        • Dependencies
        • Clone this repository
        • Build
      • Building openage
        • Buildsystem Design
        • Dependencies
        • Build procedure
        • FAQ
    • Supported Platforms
      • Continuous Integration Targets
      • Other Platforms
    • Troubleshooting
      • Windows Installer
        • More than one python installation
      • Asset Conversion
        • Conversion fails when converting from AoE II: HD Edition
        • Conversion fails for The Conquerors 1.0c
        • Conversion fails for age2_x1.xml files / Wololo Kingdoms
      • Ingame
        • UI elements are visible but the background stays black
  • Handbooks
    • End-User Handbook
      • Overview
      • Tutorials
        • How to use the original game assets?
        • Conversion
      • Concepts
      • Appendices
    • Modding Handbook
      • Overview
        • Project Structure
      • Conception
        • AI
      • Conversion
        • openage Assets
        • Convert Script
        • Conversion Procedure
        • Interactive Conversion
        • Single file conversion
      • nyan
        • What's nyan? - Introduction
        • nyan
        • WTF?
        • Srsly?
        • Design idea
        • Design goals
        • Language features
        • nyan interpreter
        • nyanc - the nyan compiler
        • openage specific “standard library”
        • Modding examples
        • Gamedata conversion
        • openage nyan library
      • Ideas
        • AI Ideas
        • Gameplay Ideas
        • Interface Ideas
        • Technical Ideas
        • Overview Feature Requests
        • Editor Ideas
      • Tutorials
        • How to use the original game assets?
        • Conversion
        • How to nyan
      • Appendices
    • Developing Handbook
      • Overview
        • Project Structure
        • Developing
        • Contributing
      • Conception
        • Engine Architecture
        • Concept
        • Components
        • Procedure
        • Phases
        • Core buildsystem modules
        • AI
      • Coding style
        • tabs vs spaces
        • python
        • conclusion
      • nyan
        • What's nyan? - Introduction
        • nyan
        • WTF?
        • Srsly?
        • Design idea
        • Design goals
        • Language features
        • nyan interpreter
        • nyanc - the nyan compiler
        • openage specific “standard library”
        • Modding examples
        • Gamedata conversion
        • openage nyan library
      • Information on Media Files
        • graphics.drs
        • terrain.drs
        • interfac.drs
        • Blendomatic
        • DRS files
        • Reproducing the gource ‘evolution video’
        • FilterMaps File Format
        • Original Metadata
        • SLP files
        • Sound documentation
        • STemplet.dat File Format
        • terrain documentation
      • Conversion
        • openage Assets
        • Convert Script
        • Conversion Procedure
        • Interactive Conversion
        • Single file conversion
      • Genie Engine
        • Civilization attributes
        • Score system
        • Unit Stats
        • General Structure
        • Protocol Header
        • Sync
        • Lobby
        • Chat messages
        • Example
        • Misaligned memory of the above message
        • Spoofing and forging AoC chat messages
        • Unit Interaction - Primary Action
        • Unit Interaction - Movement Actions
        • Unit Interaction - Formation Actions
        • Unit Creation
        • Buildings
        • Market actions
        • Others
        • AI Actions
        • C Structs
        • Technology IDs
        • Accuracy and Projectiles
        • Attacking Alarms
        • Build speed
        • Building placement constraints
        • Range to keep building
        • Damage
        • Formations
        • Garrison
        • Weird AoE2 Quirks
        • Market
        • Monk Conversion
        • Pathfinding
        • Ram Speed
        • Rates
        • Animals
        • Relics
        • Repair
        • Selecting and Deselecting
        • Switching tasks
        • Town Bell
        • Waypoints
        • Wolves
      • Ideas
        • AI Ideas
        • Gameplay Ideas
        • Interface Ideas
        • Technical Ideas
        • Overview Feature Requests
        • Editor Ideas
      • Tutorials
        • How to use the original game assets?
        • Conversion
        • How to Debug
        • Working with an IDE
        • How to Release
        • How to nyan
      • Appendices
  • Reference sheets
    • API Reference
      • engine.ability
        • ability.Ability
        • ability.specialization.AnimatedAbility
        • ability.specialization.AnimationOverrideAbility
        • ability.specialization.CommandSoundAbility
        • ability.specialization.DiplomaticAbility
        • ability.specialization.ExecutionSoundAbility
        • ability.type.ApplyContinuousEffect
        • ability.type.ApplyDiscreteEffect
        • ability.type.Cloak
        • ability.type.CollectStorage
        • ability.type.Constructable
        • ability.type.Create
        • ability.type.Damageable
        • ability.type.Deletable
        • ability.type.DepositResources
        • ability.type.Despawn
        • ability.type.Die
        • ability.type.DropSite
        • ability.type.EnterContainer
        • ability.type.ExchangeResources
        • ability.type.ExitContainer
        • ability.type.Fly
        • ability.type.FormFormation
        • ability.type.Foundation
        • ability.type.GameEntityStance
        • ability.type.Gate
        • ability.type.Gather
        • ability.type.Harvestable
        • ability.type.Herd
        • ability.type.Herdable
        • ability.type.Hitbox
        • ability.type.Idle
        • ability.type.LineOfSight
        • ability.type.Live
        • ability.type.Move
        • ability.type.Named
        • ability.type.Passable
        • ability.type.Projectile
        • ability.type.ProvideContingent
        • ability.type.RallyPoint
        • ability.type.RangedContinuousEffect
        • ability.type.RangedDiscreteEffect
        • ability.type.RegenerateAttribute
        • ability.type.RegenerateResourceSpot
        • ability.type.RemoveStorage
        • ability.type.Research
        • ability.type.Resistance
        • ability.type.Restock
        • ability.type.Selectable
        • ability.type.SendBackToTask
        • ability.type.ShootProjectile
        • ability.type.Stop
        • ability.type.Storage
        • ability.type.TileRequirement
        • ability.type.TerrainRequirement
        • ability.type.Trade
        • ability.type.TradePost
        • ability.type.TransferStorage
        • ability.type.Transform
        • ability.type.TransformTo
        • ability.type.Turn
        • ability.type.UseContingent
        • ability.type.Visibility
      • engine.aux
        • aux.accuracy.Accuracy
        • aux.animation_override.AnimationOverride
        • aux.attribute.Attribute
        • aux.attribute.AttributeAmount
        • aux.attribute.AttributeRate
        • aux.attribute.AttributeSetting
        • aux.attribute.ProtectingAttribute
        • aux.attribute_change_type.AttributeChangeType
        • aux.attribute_change_type.type.Fallback
        • aux.availability_prerequisite.AvailabilityPrerequisite
        • aux.availability_prerequisite.type.TechResearched
        • aux.availability_prerequisite.type.GameEntityProgress
        • aux.availability_requirement.AvailabilityRequirement
        • aux.cheat.Cheat
        • aux.civilization.Civilization
        • aux.container_type.SendToContainerType
        • aux.convert_type.ConvertType
        • aux.cost.Cost
        • aux.cost.type.AttributeCost
        • aux.cost.type.ResourceCost
        • aux.create.CreatableGameEntity
        • aux.death_condition.DeathCondition
        • aux.death_condition.type.AttributeInterval
        • aux.death_condition.type.ProjectileHit
        • aux.death_condition.type.ProjectileHitTerrain
        • aux.death_condition.type.ProjectilePassThrough
        • aux.despawn_condition.DespawnCondition
        • aux.despawn_condition.type.ResourceSpotsDepleted
        • aux.despawn_condition.type.Timer
        • aux.diplomatic_stance.DiplomaticStance
        • aux.diplomatic_stance.type.Self
        • aux.dropoff_type.DropoffType
        • aux.dropoff_type.type.InverseLinear
        • aux.dropoff_type.type.Linear
        • aux.dropoff_type.type.NoDropoff
        • aux.exchange_mode.ExchangeMode
        • aux.exchange_mode.type.Fixed
        • aux.exchange_mode.volatile.Volatile
        • aux.exchange_mode.volatile.VolatileFlat
        • aux.exchange_scope.ExchangeScope
        • aux.formation.Formation
        • aux.formation.Subformation
        • aux.formation.PrecedingSubformation
        • aux.game_entity.GameEntity
        • aux.game_entity.type.Ambient
        • aux.game_entity.type.Building
        • aux.game_entity.type.BuildingPart
        • aux.game_entity.type.MultiPartBuilding
        • aux.game_entity.type.Item
        • aux.game_entity.type.Unit
        • aux.game_entity_formation.GameEntityFormation
        • aux.game_entity_stance.GameEntityStance
        • aux.game_entity_stance.type.Aggressive
        • aux.game_entity_stance.type.Defensive
        • aux.game_entity_stance.type.StandGround
        • aux.game_entity_stance.type.Passive
        • aux.graphics.Animation
        • aux.graphics.Terrain
        • aux.language.Language
        • aux.language.LanguageMarkupPair
        • aux.language.LanguageSoundPair
        • aux.language.LanguageTextPair
        • aux.lure_type.LureType
        • aux.mod.Mod
        • aux.modifier_scope.ModifierScope
        • aux.modifier_scope.type.GameEntityScope
        • aux.modifier_scope.type.Standard
        • aux.move_mode.MoveMode
        • aux.move_mode.type.AttackMove
        • aux.move_mode.type.Follow
        • aux.move_mode.type.Normal
        • aux.move_mode.type.Patrol
        • aux.patch.Patch
        • aux.patch.type.DiplomaticPatch
        • aux.payment_mode.PaymentMode
        • aux.payment_mode.type.Adaptive
        • aux.payment_mode.type.Advance
        • aux.payment_mode.type.Arrear
        • aux.placement_mode.PlacementMode
        • aux.placement_mode.type.Eject
        • aux.placement_mode.type.Place
        • aux.progress.Progress
        • aux.progress.specialization.AnimatedProgress
        • aux.progress.specialization.StateChangeProgress
        • aux.progress.specialization.TerrainOverlayProgress
        • aux.progress.specialization.TerrainProgress
        • aux.progress.type.CarryProgress
        • aux.progress.type.ConstructionProgress
        • aux.progress.type.DamageProgress
        • aux.progress.type.HarvestProgress
        • aux.progress.type.RestockProgress
        • aux.progress.type.TransformProgress
        • aux.progress_status.ProgressStatus
        • aux.progress_type.ProgressType
        • aux.progress_type.type.Construct
        • aux.research.ResearchableTech
        • aux.resource.Resource
        • aux.resource.ResourceContingent
        • aux.resource.ResourceAmount
        • aux.resource.ResourceRate
        • aux.resource_spot.ResourceSpot
        • aux.resource_spot.RestockableResourceSpot
        • aux.sound.Sound
        • aux.state_machine.StateChanger
        • aux.storage.Container
        • aux.storage.StorageElement
        • aux.target_mode.TargetMode
        • aux.target_mode.type.CurrentPosition
        • aux.target_mode.type.ExpectedPosition
        • aux.taunt.Taunt
        • aux.tech.Tech
        • aux.terrain.Terrain
        • aux.terrain.TerrainAmbient
        • aux.trade_route.TradeRoute
        • aux.trade_route.type.AoE1TradeRoute
        • aux.trade_route.type.AoE2TradeRoute
        • aux.translated.TranslatedObject
        • aux.translated.type.TranslatedMarkupFile
        • aux.translated.type.TranslatedSound
        • aux.translated.type.TranslatedString
        • aux.variant.Variant
        • aux.variant.type.AdjacentTilesVariant
        • aux.variant.type.RandomVariant
        • aux.variant.type.PerspectiveVariant
      • engine.effect
        • effect.Effect
        • effect.continuous.ContinuousEffect
        • effect.continuous.flat_attribute_change.FlatAttributeChange
        • effect.continuous.flat_attribute_change.type.FlatAttributeChangeDecrease
        • effect.continuous.flat_attribute_change.type.FlatAttributeChangeIncrease
        • effect.continuous.type.Lure
        • effect.continuous.time_relative_attribute_change.TimeRelativeAttributeChange
        • effect.continuous.time_relative_attribute_change.type.TimeRelativeAttributeDecrease
        • effect.continuous.time_relative_attribute_change.type.TimeRelativeAttributeIncrease
        • effect.continuous.time_relative_progress.TimeRelativeProgress
        • effect.continuous.time_relative_progress.type.TimeRelativeProgressDecrease
        • effect.continuous.time_relative_progress.type.TimeRelativeProgressIncrease
        • effect.discrete.DiscreteEffect
        • effect.discrete.convert.Convert
        • effect.discrete.convert.type.AoE2Convert
        • effect.discrete.flat_attribute_change.FlatAttributeChange
        • effect.discrete.flat_attribute_change.type.FlatAttributeChangeDecrease
        • effect.discrete.flat_attribute_change.type.FlatAttributeChangeIncrease
        • effect.discrete.type.MakeHarvestable
        • effect.discrete.type.SendToContainer
        • effect.specialization.AreaEffect
        • effect.specialization.CostEffect
        • effect.specialization.DiplomaticEffect
      • engine.modifier
        • modifier.Modifier
        • modifier.specialization.ScopeModifier
        • modifier.multiplier.MultiplierModifier
        • modifier.multiplier.effect.EffectMultiplierModifier
        • modifier.multiplier.effect.flat_attribute_change.FlatAttributeChangeModifier
        • modifier.multiplier.effect.flat_attribute_change.type.ElevationDifferenceHigh
        • modifier.multiplier.effect.flat_attribute_change.type.Flyover
        • modifier.multiplier.effect.flat_attribute_change.type.Terrain
        • modifier.multiplier.effect.flat_attribute_change.type.Unconditional
        • modifier.multiplier.effect.type.TimeRelativeAttributeChangeTime
        • modifier.multiplier.effect.type.TimeRelativeProgressTime
        • modifier.multiplier.resistance.ResistanceMultiplierModifier
        • modifier.multiplier.resistance.flat_attribute_change.FlatAttributeChangeModifier
        • modifier.multiplier.resistance.flat_attribute_change.type.ElevationDifferenceLow
        • modifier.multiplier.resistance.flat_attribute_change.type.Stray
        • modifier.multiplier.resistance.flat_attribute_change.type.Terrain
        • modifier.multiplier.resistance.flat_attribute_change.type.Unconditional
        • modifier.multiplier.type.AttributeSettingsValue
        • modifier.multiplier.type.ContainerCapacity
        • modifier.multiplier.type.CreationAttributeCost
        • modifier.multiplier.type.CreationResourceCost
        • modifier.multiplier.type.CreationTime
        • modifier.multiplier.type.GatheringEfficiency
        • modifier.multiplier.type.GatheringRate
        • modifier.multiplier.type.MoveSpeed
        • modifier.multiplier.type.ReloadTime
        • modifier.multiplier.type.ResearchAttributeCost
        • modifier.multiplier.type.ResearchResourceCost
        • modifier.multiplier.type.ResearchTime
        • modifier.multiplier.type.StorageElementCapacity
        • modifier.relative_projectile_amount.AoE2ProjectileAmount
        • modifier.relative_projectile_amount.type.
        • modifier.type.AbsoluteProjectileAmount
        • modifier.type.AlwaysHerd
        • modifier.type.ContinuousResource
        • modifier.type.DepositResourcesOnProgress
        • modifier.type.DiplomaticLineOfSight
        • modifier.type.InContainerContinuousEffect
        • modifier.type.InContainerDiscreteEffect
        • modifier.type.InstantTechResearch
        • modifier.type.RefundOnDeath
        • modifier.type.Reveal
      • engine.resistance
        • resistance.Resistance
        • resistance.continuous.ContinuousResistance
        • resistance.continuous.flat_attribute_change.FlatAttributeChange
        • resistance.continuous.flat_attribute_change.type.FlatAttributeChangeDecrease
        • resistance.continuous.flat_attribute_change.type.FlatAttributeChangeIncrease
        • resistance.continuous.type.Lure
        • resistance.continuous.time_relative_attribute_change.TimeRelativeAttributeChange
        • resistance.continuous.time_relative_attribute_change.type.TimeRelativeAttributeDecrease
        • resistance.continuous.time_relative_attribute_change.type.TimeRelativeAttributeIncrease
        • resistance.continuous.time_relative_progress.TimeRelativeProgress
        • resistance.continuous.time_relative_progress.type.TimeRelativeProgressDecrease
        • resistance.continuous.time_relative_progress.type.TimeRelativeProgressIncrease
        • resistance.discrete.DiscreteResistance
        • resistance.discrete.convert.Convert
        • resistance.discrete.convert.type.AoE2Convert
        • resistance.discrete.flat_attribute_change.FlatAttributeChange
        • resistance.discrete.flat_attribute_change.type.FlatAttributeChangeDecrease
        • resistance.discrete.flat_attribute_change.type.FlatAttributeChangeIncrease
        • resistance.discrete.type.MakeHarvestable
        • resistance.discrete.type.SendToContainer
        • resistance.specialization.CostResistance
      • engine.root
        • Entity
    • Doxygen Reference
  • What's new?
    • Changelogs
      • Engine Changelog
        • [0.4.0] - 2019-06-27
        • [0.3.0-alpha] - 2019-06-12
        • [0.3.0] - 2015-07-28
        • [0.2.3] - 2014-11-18
        • [v0.2.2] - 2014-07-27
        • [0.2.1] - 2014-07-14
        • [0.2.0] - 2013-10-01 (non-public)
        • [0.1.0] - 2013-08-24 (non-public)
        • [0.0.0] - 2013-08-23 (non-public)
      • API Changelog
        • [0.2.0] - 2019-06-29
        • [0.1.0] - 2019-05-20
      • About Changelog
    • Release Notes
      • 0.4.0
        • Date
        • Description
      • 0.3.0
        • Date
        • Description
      • 0.2.3
        • Date
        • Description
      • 0.2.2
        • Date
        • Description
      • 0.2.1
        • Date
        • Description
      • 0.2.0
        • Date
        • Description
      • 0.1.0
        • Date
        • Description
      • 0.0.0
        • Date
        • Description
  • About
    • openage
      • Contact
      • Technical foundation
      • Goals
      • Current State of the Project
      • Installation Packages
      • Dependencies, Building and Running
      • Contributing
      • Development Process
      • License
    • Documentation
      • Static Docs
      • Dynamic Docs
        • Doc Generation
        • Webdoc Generation
    • Status
      • The list must grow
      • Working features
      • Missing functionality
      • Under the hood
        • Python interface
        • Inotify file reloading
        • Terminal emulator
        • Buildsystem
        • Job management
    • Milestones
openage
  • Docs »
  • Handbooks »
  • Modding handbook »
  • nyan - Entity-Component-System
  • View page source
Next Previous

nyan - Entity-Component-System¶

  • What's nyan? - Introduction
    • How?
    • Specification
    • Current State of the Project
    • Dependencies, Building and Running
    • Development Process
    • Contact
    • License
  • nyan
  • WTF?
  • Srsly?
  • Design idea
  • Design goals
  • Language features
    • Data handling
    • Syntax
      • Multi inheritance
      • Types
    • Namespaces, imports and forward declarations
      • Implicit namespace
      • Importing
      • Cyclic dependencies
        • Forward declarations
        • Cyclic avoidance
  • nyan interpreter
    • Database views
    • Embedding nyan
      • API definition example
      • Embedding in the engine
    • Creating a scripting API
  • nyanc - the nyan compiler
  • openage specific “standard library”
    • Defined nyan::Objects
      • Data updates
        • Mod: Game mods
        • Tech: Technologies
      • Engine features
        • Resource: Resource types
        • Ability: Available unit actions
        • DropSite: Object where resources can be brought to
        • Unit: In-game objects
        • Many many more.
    • Unit hierarchy
  • Modding examples
    • New resource
    • Patching a patch example
    • Creating a new ability
  • Gamedata conversion
    • Gamedata conversion
  • openage nyan library
    • Design principles
    • API objects
      • Entity
      • GameEntity
      • Ability
      • Modifier
      • Effect
Next Previous

© Copyright 2013-2019 openage-Team

Built with Sphinx using a theme provided by Read the Docs.