Daily and Deadly explore the possibility of a fully on-chain game with minimal gas requirement by letting player play at their own pace once a day. The total gas cost is thus bounded.
It uses a daily commit+reveal scheme to ensure a fun experience where player discover the other player's move to their dismay or joy depending on the outcome.
Player can choose to collaborate or attack each other. The combat system uses a multi-round system to bring a strong tactical component to the game. It works as follow:
Player each turn need to use a set of cards, some more powerful than other. Once chosen for a day, these card remain unavailable until the full set is consumed. This require player to carefully chose what they use each day to prepare for the best and worst outcome, not knowing what other players will be choosing.
While for the hack the system is relatively simple, using simple numbers, the mechanics can be extended to offer even more complex strategies while keeping the gas requirement extremely low.
The game is set in an ever shifting dungeon where the room and exits changes every day. Player can collect gold by collecting gold's bags or fighting monster. The game will also let player discover new equipment helping them in their quest.
Player plays as character which are themselves NFT. These NFT are unique in that they act as vessels of information. This allows multiple world (dungeon) to act on the same NFT data, bringing interoperability across dungeon.
Talking about interoperability, character can be controlled by smart contract themselves which would allow players to collaborate as a Band of heroes or make NPC character giving quest. We could even imagine this to be a bridge between other game worlds
While the hackathon show a basic demo, interesting ideas yet to be implemented can make this interoperability even more interesting. Room could be NFT themselves allowing player to own them and be Dungeon keepers
Daily and Deadly is a fully on-chain game with zero backend component. The only thing needed to play is a wallet connected to a node and a web browser. It is published on IPFS, have an in-browser indexer that index the state purely from the wallet's rpc interface. No backend
It uses the Jolly-roger template with svelte-kit, + viem
The main challenge encounter relates to the commit+reveal scheme that require careful thinking when it comes to contract state management and how such information is given to the frontend.
With 5 days of work, I am relatively happy with out it came out but there is definitely room for improvement in how the state could be managed better.