CryptoBotWars or How to Build Shitty Demos and Why

Tokens, Robots, Payment Channels and Live Streams

Behind the scenes

Why? … I had some questions:

  1. Is it easy to build something on top of Raiden right now? Do we lack anything that is fairly easy to change?
  2. How would Raiden work right now for one-to-many & many-to-one payments, cases frequently related to businesses
  3. Would people find bugs in Raiden? The best testers are the clueless, newly onboarded testers.
  4. Would Raiden behave nicely with high throughput?
  5. Would payments be successfully mediated (various locations & system setups)
Dark Vader and Blue Yoda. Soup bowl & ping-pong Santa Hat! Looks great! … from 4m away 😛

How did the idea come about?

Robots Want Crypto

  1. I and my partner, who actually built the Devcon3 RC Car, really like robots. And he already brought an army of them in the house … it’s the wild robowest for people who don’t want to grow up.
  2. Robots are fun and cute (🤖 vs. 😼 meme duel now!)
  3. I put my Yoda voice to work! (the beginning of yet another career..)
  4. But actually robots give us a sense of what the future could be 🚀.

How did I start building?

  1. Dark Vader RobotServer & Blue Yoda RobotServer
  2. GameGuardianServer
  3. GameGuardianRaidenNode
  4. GameClient
  5. Live Stream on Twitch
export const GameState = {
null: 0, // No current game running
open: 1, // During game time, users can make moves closed: 2, // During game resolution time, users wait for results and payments resolved: 3, // Game and resolution has ended.}
moves = await moveController.find({where: {gameId: id}, order: ["_id ASC"]});raidenPayments = await this.getRaidenPayments(TOKEN)moves.forEach(sentMove => {
if (
sentMove.amount &&
sentMove.move &&
sentMove.amount >= game.move_amount
) {
raidenPayment = raidenPayments[0].find((payment) => {
return payment.identifier === sentMove.paymentIdentifier;
});
if (raidenPayment) {
total_amount += sentMove.amount;
move_count[sentMove.playerId][sentMove.move] += 1;
validMoves.push(sentMove);
}
}
});

sorted_moves_1 = Object.entries(move_count['1']).sort((a: any, b: any) => {return a[1] - b[1]});
sorted_moves_2 = Object.entries(move_count['2']).sort((a: any, b: any) => {return a[1] - b[1]});
move1 = sorted_moves_1[2][1] > 0 ? sorted_moves_1[2][0] : null;
move2 = sorted_moves_2[2][1] > 0 ? sorted_moves_2[2][0] : RockPaperScissorsGetLoser[move1];
// If we have one player, make sure he wins
if (!move1) {
move1 = RockPaperScissorsGetLoser[move2];
}
winningMove = RockPaperScissorsGetLoser[move1] === move2 ? move1 : move2;
validMoves.forEach((move) => {
// We reward both players if their final moves are the same
if (move.move === winningMove) {
winningMoves.push(move);
}
});
guardian_amount = total_amount / 10;
total_amount -= guardian_amount;
winner_amount = total_amount / winningMoves.length;
gameUpdate = {
winningMove,
player1: <PlayerResult> {
count: sorted_moves_1[0][1] + sorted_moves_1[1][1] + sorted_moves_1[2][1],
move: move1,
move_count: move_count['1'],
},
player2: <PlayerResult> {
count: sorted_moves_2[0][1] + sorted_moves_2[1][1] + sorted_moves_2[2][1],
move: move2,
move_count: move_count['2'],
},
amount: winner_amount,
amountGuardian: guardian_amount,
players: moves.length,
};

this.updateById(id, gameUpdate);
// Make Raiden payments to winners
winningMoves.forEach((move) => {
this.sendRaidenPayment(
TOKEN,
move.userAddress,
winner_amount,
move.paymentIdentifier
);
});
this.sendRobotCommands(move1, move2, winningMove);

Conclusions

--

--

--

Building bricks for the World Computer #ethereum #Pipeline #dType #EIP1900 https://github.com/loredanacirstea, https://www.youtube.com/c/LoredanaCirstea

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Multi-Sig — Identity and Ethereum Are NOT Compatible

TRAVA ANNOUNCES THE LAUNCH OF W1.1 LIQUIDITY MINING PROGRAM ON SEPTEMBER 23TH

The Numbers Are In…

Something EPIC is Coming

DEIP token roadmap

Say What?! You Can Buy DFY With Visa & Mastercard!

Trade or Invest in Crpyto

TRADE OR INVESTMENT

It’ official Generic fam!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Loredana Cirstea

Loredana Cirstea

Building bricks for the World Computer #ethereum #Pipeline #dType #EIP1900 https://github.com/loredanacirstea, https://www.youtube.com/c/LoredanaCirstea

More from Medium

Coming Soon: Your Avatar CEO

[HOD’s Corner]: Meet Amogh Vaidya, Head of Animation— India

Innovating with EdTech

The Perks of Playing the Oculus Rift 2: The Unexpected Benefits of Virtual Reality