This is part of a talk I gave at DevWorld Amsterdam 2024 and Porto Tech Hub Conference 2024.
The important code is in the game/time-machine.js file.
The createTimeMachine function creates a proxy out of given data, and adds functionality for "traveling back in time".
The basic idea is that we have an array of states (target.states), which holds a current timeline's state.
To make it a bit more fancy, there is also a target.timelines array, which is basically just one more abstraction layer. There can be various timelines, each with its own state. The timeline can also be switched.
- The proxy trap
set()adds a new item to the states array. - The proxy trap
get()provides a few functions that are exposed
The starting state is in the start branch.
The final version is in the main branch.