1. Secret Log Events
We have secret state, but log events all go to a global log. We need some mechanism to allow sending a customized log per player so that secret state isn't leaked.
2. Custom payload
Allow insertion of custom messages into each log event.
3. Incremental log updates
Sending the entire log on each sync is going to eventually become a performance problem for large games. Maybe we should just send the log events since the last event that the client has?
4. Store entire state at each log event.
The GameLog cannot correctly replay actions over partial state (which is the case when secret state is used). We should store the state object itself at each log event (which also makes a strong case for incremental log updates). Perhaps the best approach here would be to actually separate out the log object from state so that it can be stored in a separate area of storage and be retrieved independently. That way we also don't read a very large object containing its own history every time we apply an update using the game reducer. This should probably wait on #251 because the server component will start to get a bit more complex and it would be good to be able to test all these interactions accurately.
5. Handle endPhase in log
We need to render something in the log for endPhase.
6. Store log in separate area of storage.
Logs are currently stored along with the state object. We should probably store them in a separate table so that they are never read during updates. We could probably also make the storage API more descriptive to do this. It currently has set / get, but we could probably change it to addLogEvents, updateState, getState, getLog etc.
1. Secret Log Events
We have secret state, but log events all go to a global log. We need some mechanism to allow sending a customized log per player so that secret state isn't leaked.
2. Custom payload
Allow insertion of custom messages into each log event.
3. Incremental log updates
Sending the entire log on each
syncis going to eventually become a performance problem for large games. Maybe we should just send the log events since the last event that the client has?4. Store entire state at each log event.
The
GameLogcannot correctly replay actions over partial state (which is the case when secret state is used). We should store the state object itself at each log event (which also makes a strong case for incremental log updates). Perhaps the best approach here would be to actually separate out thelogobject fromstateso that it can be stored in a separate area of storage and be retrieved independently. That way we also don't read a very large object containing its own history every time we apply an update using the game reducer. This should probably wait on #251 because the server component will start to get a bit more complex and it would be good to be able to test all these interactions accurately.5. Handle endPhase in log
We need to render something in the log for
endPhase.6. Store log in separate area of storage.
Logs are currently stored along with the state object. We should probably store them in a separate table so that they are never read during updates. We could probably also make the storage API more descriptive to do this. It currently has
set / get, but we could probably change it toaddLogEvents,updateState,getState,getLogetc.