Quote:
Hello, everyone, and welcome to another update on openage. For this month, our priorities have mostly been getting release 0.6.0 ready to ship and thinking about something to start on for the subsequent 0.7 milestone. While release 0.6.0 is currently stuck in review for a bit, milestone 0.7 is already starting to take shape, so we can already tell you a few details about it. So, without further ado, let's get started.
Game entity interaction
As our major focus for milestone 0.7, we have decided on interaction between game entities. This includes all ingame mechanics that let units do things to each other. The most common example of this would probably be attacking, although conversion, construction, or resource gathering also fall under this definition.
openage (mostly) encapsulates all interactions inside one ability type: ApplyEffect. As the name suggests, ApplyEffect holds a batch of Effect objects that define what interactions are done when the ability is used. The concrete type of the Effect object determines the type of interaction. For example, attack damage is modeled by the Effect type with the (somewhat bulky) name FlatAttributeChange. Different effect types can be mixed in a batch, so an ApplyEffect ability could theoretically do damage and simultaneously try converting a unit.
Structure of ability and effect types in the API.
Our implementation is still in a very basic work-in-progress stage, so there are not many interesting stories to tell yet. We are currently focusing on getting attack interactions to work with the game entities in the AoE2 mod pack with some example code. Here you can see part of the result:
A knight game entity, currently attacking itself due to the absence of other targets.
Implementing more interaction will get more and more complex as other systems get involved, such as attack stances, line of sight, state changes, and so on. You can expect to read more on that over the next months.
What's next?
When we are satisfied with the basic interactions, we will gradually expand the capabilities of the engine to support more interaction features. An obvious choice for the next improvement would be the introduction of a collision system, which we need so that game entities can compute when they are close enough to each other for interactions.
Game entity interaction
As our major focus for milestone 0.7, we have decided on interaction between game entities. This includes all ingame mechanics that let units do things to each other. The most common example of this would probably be attacking, although conversion, construction, or resource gathering also fall under this definition.
openage (mostly) encapsulates all interactions inside one ability type: ApplyEffect. As the name suggests, ApplyEffect holds a batch of Effect objects that define what interactions are done when the ability is used. The concrete type of the Effect object determines the type of interaction. For example, attack damage is modeled by the Effect type with the (somewhat bulky) name FlatAttributeChange. Different effect types can be mixed in a batch, so an ApplyEffect ability could theoretically do damage and simultaneously try converting a unit.
Structure of ability and effect types in the API.
Our implementation is still in a very basic work-in-progress stage, so there are not many interesting stories to tell yet. We are currently focusing on getting attack interactions to work with the game entities in the AoE2 mod pack with some example code. Here you can see part of the result:

A knight game entity, currently attacking itself due to the absence of other targets.
Implementing more interaction will get more and more complex as other systems get involved, such as attack stances, line of sight, state changes, and so on. You can expect to read more on that over the next months.
What's next?
When we are satisfied with the basic interactions, we will gradually expand the capabilities of the engine to support more interaction features. An obvious choice for the next improvement would be the introduction of a collision system, which we need so that game entities can compute when they are close enough to each other for interactions.
For further information about Openage, visit the Official Website, Forums, and YouTube Video Channel. That's all, folks! Stay tuned at PPM for more news coverage on Openage!