Estoy desarrollando un juego que actualmente usa un contrato de GameFactory para crear instancias de un contrato de Juego. El patrón Factory permitiría a cualquier número de jugadores jugar su propio juego de un solo jugador y los datos del juego almacenados en instancias de juego separadas.
Sin embargo, idealmente necesito que los contratos del juego interactúen con los contratos de GameFactory para actualizar las puntuaciones y estadísticas globales sobre todos los juegos que se están jugando actualmente.
¿Cuál sería una buena manera de lograr esto? ¿Hay algún ejemplo existente de patrones para juegos descentralizados como este?
Un arreglo hub and Spoke tiene ventajas, al igual que un contrato monolítico.
Hub y habló
Monolítico
Trabajar sobre la base de Hub and Spoke lleva naturalmente a algunas preocupaciones genéricas. Como mencionó, probablemente los Spokes necesiten actualizar los globales en el Hub, el Hub necesita limitar el acceso a ciertas funciones para que solo un Spoke esté autorizado para hacerlo, etc.
Mis exploraciones me llevaron a crear contratos generalizados, más o menos:
contract Hub is Deployer { ...
contract Spoke is Deployed { ...
Considere que Deployer realiza un seguimiento de Spokes desplegados y hace cosas como:
modifier onlyDeployed { // only trust contracts made by this Hub
... y Deployed hace cosas como recordar el Hub que lo generó.
Si desea poder actualizar la lógica del juego, puede considerar una mayor separación de los datos del concentrador y la lógica de fábrica. Es decir, desea poder mantener los datos globales en un contrato que no se espera que cambie, mientras reemplaza periódicamente el contrato que implementa nuevos juegos.
El costo de gasolina más bajo y el enfoque más simple es un contrato monolítico con datos del juego agrupados en estructuras y sin posibilidad de actualización.
Espero eso ayude.
jesús
koukotsu
usuario19510
usuario19510