Project Perfect Mod Forums
:: Home :: Get Hosted :: PPM FAQ :: Forum FAQ :: Privacy Policy :: Search :: Memberlist :: Usergroups :: Register :: Profile :: Log in to check your private messages :: Log in ::

The time now is Fri Feb 23, 2024 9:08 am
All times are UTC + 0
Openage Development News: November 2023
Moderators: Global Moderators
Post new topic   Reply to topic Page 1 of 1 [1 Post] Mark the topic unread ::  View previous topic :: View next topic
Author Message
Supreme Banshee

Also Known As: banshee_revora (Steam)
Joined: 15 Aug 2002
Location: Brazil

PostPosted: Mon Dec 18, 2023 2:01 pm    Post subject:  Openage Development News: November 2023
Subject description: A "Drag Selection"of updates to show how this project is advancing in ages!
Reply with quote  Mark this post and the followings unread

Welcome back, visitors! We have been able to track some updates coming from Openage earlier this month and we want to share it with you. For those unfamiliar with it, Openage is a free cross-platform Real Time Strategy game engine that provides the mechanics of Age of Empires, replicating its look and feel, making it more moddable, and allowing multiplayer games with more than 8 players. Here is what you need to know about the progress on Openage:

Hello and welcome to another one of our monthly openage devlogs! This month was all about adding usability features to the engine as well as making the nyan data API easier to use. Well, easier for us developers, at least. Without further ado, let's start with our most interesting new feature.

Drag Selection
Selecting units with drag selection on the screen is something you see in every RTS game since the 90s, and I'm sure everyone reading this has used it before. For the player, the process is pretty simple:
They draw a rectangle on the screen by holding the mouse button down and everything visible in the rectangle is then put into their selection queue. In openage it now looks like this:

While this looks like a small feature, the implementation a bit more challenging than what we have done before. Most of this is because drag selection requires multiple subsystems to work together to get the desired result. First of all, we need the input system to handle not just one event but a sequence of three mouse actions (MouseDown -> MouseMove -> MouseUp). For the selection itself, we also need to figure out which units inside the rectangle are selectable by the player so we don't end up with a bunch of trees in our selection queue. Last but not least, the rectangle also has to be drawn on the screen so the player can see what they are actually going to select.

In our old engine architecture, the implementation of this feature was a hot, garbled mess that massively tanked performance (also visible in our YouTube demo),
partly because it was basically taking control of the renderer which stalled all other draw commands. This is where our new engine architecture with decoupled subsystems finally pays off big time. In comparison to the previous implementation, the new drag selection is communicated via sane interfaces from the input system to the other subsystems of the engine.

Here is how the input events are handled now:
  • MouseDown: The input system detects the drag selection sequence initialization and switches into a drag selection context
  • MouseMove: Inputs are forwarded to two different places
    • A HUD controller that tells the renderer to draw/resize the rectangle on screen
    • A game controller for the player that keeps track of the rectangle position and size

  • MouseUp: The input system finalizes the selection

    • The HUD controller tells the renderer to delete the drawn rectangle
    • The game controller sends the final rectangle position size as a drag-select event to the game simulation
    • The game simulation handles the drag select event by
      • Checking which units are inside the rectangle
      • Checking which units are selectable by the player
      • Finally, sending the list of unit IDs back to the controller

Configurable Activities
Way back in June, we added configurable game entity behavior in the form of the activity system into the engine. However, for the last months, the "configurable" part only existed in theory since all game entities were assigned a hardcoded activity by default. This month. we have been making efforts to add support for activities both to our nyan data API and the openage converter.
This will eventually allow us to define the whole behavior in the modpack itself, which in turn also allows modders to change game entity behavior with a simple data mod.

Currently, the nyan API changes look like this:

Since activities are simple directed node graphs, we can model all node types as nyan objects that point to successor nodes via the next member. Internal events are handled the same way, using nyan objects that have members for the event payload. When the modpack is loaded, the engine builds the activity graph using the node definitions.

Activities are assigned to game entities with a new ability (also called Activity) which references the node graph. This means that every game entity can potentially have its own unique behavior (which can also be changed at runtime).

What's next?
During next month, we will put more work into the configurable activities and release a new data API specification when we are done. If there is enough time, we will also improve the HUD a bit to
display more useful information for players on screen.

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:

You can learn more about Openage by visiting the Official Website, Forums, and YouTube Video Channel. And that's all for now!

Key Words: #News #OpenAge 


Mods, Mods Support, Public Researchs, Map Archives, Tutorials, A Friendly Community and much more. Check it out now!

Back to top
View user's profile Send private message Visit poster's website Skype Account
Display posts from previous:   
Post new topic   Reply to topic Page 1 of 1 [1 Post] Mark the topic unread ::  View previous topic :: View next topic
Share on TwitterShare on FacebookShare on Google+Share on DiggShare on RedditShare on PInterestShare on Del.icio.usShare on Stumble Upon
Quick Reply

If you are visually impaired or cannot otherwise answer the challenges below please contact the Administrator for help.

Write only two of the following words separated by a sharp: Brotherhood, unity, peace! 

You cannot post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum

Powered by phpBB © phpBB Group

[ Time: 0.1613s ][ Queries: 11 (0.0086s) ][ Debug on ]