OpenPF2 / Plugin

Core C++ Game Logic for OpenPF2 (Status: Pre-alpha)
https://www.openpf2.org/
Other
24 stars 5 forks source link

[Players] Movement During Encounters + Top-down RTS-Like Strategic View ("Tactical Camera") #21

Closed GuyPaddock closed 1 year ago

GuyPaddock commented 2 years ago

As a Player who is controlling a character during an encounter, I'd like it if there was a way that I could view the encounter from a top-down view -- like a real-time-strategy -- so that I can see how far my character can move from their current location and easily select where I want my character to move during the next movement action I queue-up.

Acceptance Criteria

Given that I am in "encounter" mode:

  1. I would expect the camera to shift into a third-person, top-down view, like a real-time strategy game.
  2. Overlaid on the ground around my character, I would expect to see a faint outline of the tiles/squares/hexagons into which my character can move from their current position with the action points they have right now.
  3. Given that my character cannot reach a specific area of the map because the tile is blocked by terrain, another character, or some other obstacle: I would expect no tile/square/hexagon to appear in that area of the map.
  4. I would expect to see a cursor on the screen.
  5. Given that I move the mouse (PC) or the left analog stick of my controller (console/XBox controller): I would expect the on-screen cursor to follow the movement of my mouse or controller.
  6. Given that I press WASD (PC) or I move the right analog stick of my controller (console/XBox controller):
    1. I would expect the third-person view to move around the map, following the movement of my mouse or controller.
    2. I would expect my camera movement to be restricted to a reasonable area around my character so that I do not lose track of the encounter.
  7. Given that the cursor is hovering over a tile that my character cannot reach: I would not expect any change in visual appearance for the tile or cursor.
  8. Given that the cursor is hovering over a tile that the character can reach in a single turn: I would expect the tile to become brighter or highlighted, to communicate that it can be selected.
    1. Given that I click the primary mouse button (PC) or press the "A" button on my controller (console/XBox controller):
      1. Given that it is not currently my character's turn to act, according to initiative: I would expect to be able to select a movement tile, but not to be able to move until my character's turn comes up.
      2. Given that it is currently my character's turn to act: I would expect my character to move toward the tile that was selected, moving at the proper movement speed for my character.
      3. Given that my character has not finished the last move I queued-up: I would expect to not be able to queue-up any additional movement actions until my character reaches the tile that I previously selected.

Design Concepts

We can borrow the top-down view of combat mode from Dragon Age Inquisition:

Other ideas include a simple grid: https://youtu.be/mUfLKRgbIEo?t=10

... or a hexagonal grid: https://youtu.be/QzAfE9tVQuc?t=5

Implementation Notes

Looks like we might be able to borrow from the open-source UE4 RTS toolkit, which is MIT-licensed: https://github.com/npruehs/ue4-rts

GuyPaddock commented 2 years ago

Blocked by https://github.com/OpenPF2/PF2Core/issues/23.

GuyPaddock commented 1 year ago

Note that player feedback about the tactical camera from DA:I was pretty negative: