HydroBlockchain / community-brainstorming

A place for the Hydro Community to discuss ideas for the HCDP
1 stars 0 forks source link

Snowflake based Top Trumps/Battle Card style game dApp #38

Open milvinae opened 5 years ago

milvinae commented 5 years ago

A small idea for a Snowflake based Top Trumps style game that I thought the community might like.

What problem does this solve?: Doesn't solve any problems, but might be a bit of fun and a POC for Snowflake.

Project Details: Create a dApp that allows users in to register a virtual card with stats of their choosing from a total of 100 points (e.g. strength, magic, sneak, speed, stamina). This card, and its associated Identicon, will belong to the user and will be associated with their Snowflake.

Players can then battle other players using a chosen stat. If they win the other player gets a copy of their card to add to their deck. If they lose they keep their card and can play again. You can never lose your own card.

If they battle with another players card and win they win the opponent's card to add to their deck. If they lose using another player's card than they lose that card.

How it would work A smart contract, written in Solidity, that interacts with ERC-1484 and Hydro smart contracts to create your 'character'.

It would also need identicons that generates a unique visual representation of every possible card for each user based on the public address of their 'character'.

Now what? Just throwing this out there, looking for thoughts, ideas, feedback.

Tweevie commented 5 years ago

Love this idea! had been thinking of something similar myself but like a Crypto Mercenaries battle card & collectable game. Remember the G.I. Joe toy figures from years back, they would have all sorts of different characters and on the back of the box a description of their abilities/skills etc. Well something like this could make a fantastic battle card game app if possible? I don't know how technical it could get but maybe be able to create your own Mercenary and give them the skills you want out of the 100 points system you mentioned and a small background description of that character and battle them against each other or trade them.

MrCryptoKrabs.

jzafrap commented 5 years ago

Here is an implementation idea:

A) Two round game:

  1. Make every "battle" in two rounds, where first round you "attack" with your card (selecting your using skill) and second round you "defeat" with your card (using skill selected by the opponent).

  2. The winner is the owner of the card that result with better score after the two rounds. For example:

    • user1 plays its card: speed:45, strength:30, attacks with Speed. -user2 plays its card: speed:20, strength:50, attacks with Strength First round result (user1 speed attack): user2 points = 20-45 = -25 points Second round result (user2 strength attack): user1 points = 30-50 = -20 points The winner of play is user2, because get less damage after the two rounds. In case of tie (same score), nobody wins and cards are returned to their decks.
  3. How to play this two round game? The DApps shows two list of cards:

    • One View with the cards currently in the user's deck
    • Other View, called "battlefield", with the cards currently "on battle" by other users (at this moment, you don't know what skill they are using on attack!). The cards that the user already won can be disabled in this list, as has no sense try to win it again. You can make two actions: a) put "on the battlefield" one of your cards: you must select a card, and "put on attack" selecting the ability to use for the attack. This send a transaction to the contract, and you'll see your card in the "battlefield" view, waiting for an opponent. b) throw an attack to any of the cards showing on the "battlefield" view. First, you select a card of your deck, then select the skill to use for attack, and last, select a card of other user to throw the attack. Then, the transaction in thrown and the winner is calculated.

The contract could have:

A variation could be not showing the battlefield, and get your opponent from a queue on the contract, but I think is visually better to show!