MUD Protocol for mixing games together -- like you would a TikTok Duet!
In the MUD presentation, augmented reality in autonomous worlds was introduced as a way for any developer to compose ontop of existing games. Add rules and logic to a exisiting game world to get an additional layer of competition or economy. This project was inspired to look at composability from another dimension -- instead of building games ontop of another game, could we mix two games together? For example, instead of expanding the "League of Legends" universe into a game of a different genre, what if the best of "League of Legends" could mix with "Dota" or a mobile MOBA? We believe that by mixing games, more friends can bond over shared experiences similar to how Tik Tok "Duets" engage audiences on social media.
In order to make mixing games a desireable reality, several design considerations were identified. Availability: Mixing games should be pseudo-automatic or dummy proof instead of having to rely on experts to manually perform the operation Compatibility: Should have permissionless procedure for “web3ifying” preexisting games. Adoptability: Should not pose insurmountable barrier to game developers and limit their choice in use of algorithm, code architecture, or devop methods Survivability: Should not cause disruption to gaming industry in ways including direct competition with companies for revenue. We started our journey looking for in academic literatrue for a suitable model to describe any game. An article from https://www.gamestudies.org/0501/gruenvogel/ caught our attention because the math model it used provided was intuitive and similar to the "Markov Decision Process" central to Reinforcement Learning. It is a good starting place to eventually evaluate whether or not it would be possible to automatically mix games using some metric of "fun"/"balanced".
Upon deciding on the modelling, we began to fit it with the MUD framework. MUD had good features we could use, such as the theoretically sharable System and Store resource partition, our task will be to prototype out a way to mix two games, that were deployed on two Worlds, together. The MUD technology benefited us in that it provided much of the framework that we would like, however it also posed some challenges such as it's lack of tooling for easily registering shared resources across worlds. Understanding the technology better greatly shaped our contribution and direction in this hackathon. In the end, we took the first step to build and arbitrarily mix together "Emojimon" and "Tic Tac Toe" by defining a straight forward wrapper function as the interface to the game logic. We also diagramed out how the states of the mixed game will be interpreted from the exisiting games and ultimately built a mixed game. The limitation of our demonstrator is that it currently resides on one world.
Latest Update: We were able to make another small increment forward to call systems from another system from within the same world. The next step would be to integrate this tooling into the main project repo. The relevant code snippet is here: https://github.com/musnit/emojimon/blob/e753ba73796b7a66c8c22972f4d159a424513671/packages/contracts/src/MetaWorld.sol#L8
In parallel, a separate contribution was made desmonstrating calling MUD functions using the mobile environment. The demonstration is here: https://youtu.be/QjX1uoq5yMc . This was made with Web3j calls and the challenge was building the correct function selector. Unfortunately we did not have enough time to work this part of the contribution into the main project. Here is the relevant code snippet https://github.com/Babak-gh/Emojimon-Android-Controller/blob/a7c508f8f088fba979fede2bb98debff3b6e22c6/app/src/main/java/com/example/mud/MainActivity.kt#LL44C29-L44C29