Openage Development News: August 2024

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.

Effect types

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:

Knight attack

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

links

stalking