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
hold 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 modpack with some example code. Here you
can see part of the result:
A knight game entity, currently attacking itself due to an 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 capabilties 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.
Questions?
Any more questions? Let us know and discuss those ideas by visiting our subreddit /r/openage!
As always, if you want to reach us directly in the dev chatroom:
- Matrix:
#sfttech:matrix.org