Working on timeline data structures!
- Paused: Time immune
- Playing: Not time immune
- Game-level player actions: move, rewind, forward
- Note you can also undo & restart, but these are “outside of the logical game environment”
- Execute: Player move (up/down/left/right)
- Undo: Perfect undo of the last user action - ignore paused logic
- Rewind: Go backwards in time - apply paused logic
- Unwind: Go forwards in time - apply paused logic
Forward Time Travel (Unwind)
I think I have worked out a way to allow forward and backward time travel by the user. It will be as generic as possible. Some situations allow for forward time travel:
- Player is paused, and moves around
- By moving, you are not rewriting the “end” of the timeline, so unwind is allowed up till the end.
- Player is in any state, and rewinds
- Rewinding can happen all the way to the beginning, and unwind is still allowed to be used all the way till the end.
- As soon as a playing (non-paused) player moves, or any non-paused object’s state changes, the timeline will get truncated to this point, and the “old” future gets overwritten.
There will be items in the game that the player must consume to enable traveling through time in each direction. There are a few reasons for this:
- It gives an opportunity to show the player a notification of new controls, and that there is a new element to the game.
- It allows to dial down the overpowered nature of having both rewind/forward abilities.
- It keeps additional constraints in-place for the player to be able to learn at a less overwhelming rate.