SFTtech/openage

Cost stamps (pathfinder)

Open

#1,676 建立於 2024年8月25日

在 GitHub 查看
 (2 留言) (0 反應) (0 負責人)Python (12,130 star) (1,135 fork)batch import
area: simulationgood first issuejust do itlang: c++nice new thing ☺

描述

Required Skills: C++

Difficulty: Medium

Our current model of the flow field pathfinder doesn't account for temporary changes of the cost grid, e.g. a building being placed on terrain. In this example, the building would change the movement cost of the grid (making affected tiles impassable) only as long as it exists. Once it is removed, the cells should return to their original cost value (e.g. that of the underlying terrain).

For flow fields there already exists a suggested solution for this in the form of cost stamps (check out the related article). Essentially, cost stamps record the original value of the cells when they change its value. Removing a stamp restores the original value.

To try out the current pathfinder, check out pathfinding demo 1 by running the following command:

./run test -d pathfinding.tests.path_demo 1

Tasks:

  • Add cost stamps storage for cells to the CostField implementation. For performance reasons, the stamps should be stored separately from the current cost values (so not in the cells vector). Stamps should record
    • Time of "stamping"
    • Original cell value
  • Add new methods for cost stamps to CostField. You should at least implement these functions:
    • CostField::stamp(..): Place a stamp down for a specific cell
    • CostField::unstamp(..): Restore the original value for a specific cell

Further Reading

貢獻者指南