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 Apr 12, 2024 11:46 pm
All times are UTC + 0
Openage Development News: January 2024
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
Banshee
Supreme Banshee


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

PostPosted: Tue Feb 27, 2024 2:25 am    Post subject:  Openage Development News: January 2024
Subject description: It will move to the right direction if... pathfinding works, of course!
Reply with quote  Mark this post and the followings unread

Welcome back, commander! The staff from Openage has recently shared some bits of the recent progress done on their project. 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 was posted about it:

Quote:
Hello everyone, and welcome to another (very delayed) update on the current openage development progress. This time, we have a lot to talk about a new, larger feature implementation (and a few other cool things that are interesting for you nerds). So, without further ado, let's look at the changes.

Pathfinding with Flow Fields
In mid-January, we started working on a new pathfinding algorithm based on flow fields. It is set to enhance our previous pathfinding logic, which so far is a pure A* implementation.

For those unfamiliar with flow fields, here is a quick introduction: Flow field pathfinding is a technique that's specifically intended for large crowd movements, which is exactly what we are doing in most RTS games. In these games, you often have situations where a) multiple units are controlled at the same time and b) moved as a group to the same goal location. The key idea behind flow field pathfinding is that instead of finding the best path for every individual unit, as done in A*, we calculate the best paths for the whole grid as direction vectors. These vectors then steer units around obstacles and towards the goal. As a result, all units with the same goal can "flow" across the grid using these vectors, no matter where their starting positions are.

Explaining every detail about flow fields could warrant its own blog post, so we will stop here and direct everyone interested enough to read the article that our implementation is based on. Currently, we are still demoing our flow field pathfinder to tweak it before we build it into the actual game simulation. The demo shows just the basic flow field functionality, but you should already be able to see where we are going with it.



green == less expensive, red == more expensive, black == impassible

Every flow field pathing request starts with a cost field that assigns a cost value to each cell in the grid. This cost determines how expensive it is to move to a cell on the grid. The cost field changes infrequently during gameplay, e.g., when a building is placed.



target cell == (7,7); origin is left corner

yellow == less expensive, purple == more expensive, black == impassible

When we get a pathing request to a specific goal, another field called integration field is computed. The integrated costs of each cell contain the minimum movement cost required to reach the goal of the cell. To do this, we integrate outward, starting with the target cell by checking each cell's direct neighbors and setting the cells' integrated cost to own_cost + cheapest_neighbor_cost.



As a final step, we create the flow field that calculates steering vectors for each cell. The steering vectors point towards the neighbor cell with the lowest integrated cost. This way, units following the vectors should always take the path with the cheapest movement cost to the goal. This is independent of where their initial position is on the grid.

Optimizations
Since the beginning of this year, we have started optimizing some parts of the code in Python and C++ that were in need of a speedup. On the C++ side, this is mostly addressed by making our internal data structures more cache-friendly. This is especially relevant for our renderer, where cache-friendly data means more throughput and, as a consequence, more objects that can be shown on screen.

In our Python code, we have added multi-threading support to the final media export step in the conversion process. Previously, conversion of graphics data took a significant amount of time, especially for the newer game releases, which require processing gigabytes of graphics files. Converting this data would often take up at least 30 minutes.

The new implementation of the media converter now parallelizes the conversion of graphics data using Python's multiprocessing module. This drastically speeds up the overall conversion process by utilizing all available CPU threads. Conversion should now take np longer than 5 minutes for any AoE release.



The table below shows conversion times before and after multi-threading was introduced. As you can see, the great beneficiaries are DE1 and DE2. The other games also profit, although not as much, because some files convert so fast that the converter cannot spawn threads fast enough to keep up. This is also the reason why AoE1 is slightly slower now, although the difference is negligible.



What's next?
We are going to put more effort into pathfinding so that we can use it in the actual game simulation soon. That would also require us to properly design collision detection so that the feature might stay in a "work in progress" stage for a while.

Besides the new pathfinding, we also want to integrate more GUI and HUD features, as that will become more relevant once we add more gameplay features.

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




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
Username:


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.1562s ][ Queries: 11 (0.0083s) ][ Debug on ]