Duel In The Dark

Duel In The Dark

A game where two players outwit each other to bring about their opponent's downfall while staying hidden.

The problem Duel In The Dark solves

"A pilgrimage of commerce, they proclaimed. Our quest, a simple retrieval of rare minerals from the distant planet of Halderbaid, yet I should have suspected their motives. They concealed a sinister design, a desire to return with a most heinous creature. My companions have perished, leaving me to face the unknown alone. Shall I survive, or shall the monster claim me as its prey?”

Duel In The Dark is a game for two players where one of you plays the role of an alien creature born to kill and the other a human ready to do everything to survive. This takes place in a spaceship who lost its electric power and lights are out. The only way to win is to pay attention to any clue you can find about the location of the other and kill at the right moment before they do the same to you.

The main inspiration is “Revolver Noir”, a 2 player card game with equivalent mechanics. “Duel In The Dark” uses Zero knowledge proof via the Circom language to bring these mechanisms into the digital realm.

This allows the game to not only work online but also to be extended with more complex mechanisms which would have required too cumbersome manual tracking in a physical version.

Plus, thanks to zero knowledge proof and smart contract, the game can offer an even more compelling experience for players willing to stake some valuable asset to play with. And this without the need to trust any third party.

This latter capability can be extended later in tournament style competition or even positive-sum mechanisms to encourage play and community building.

Challenges I ran into

Main challenges were frontend work with snarkjs and wagmi and nextjs causing problem

the circom language was also a challenge as features you expect in traditional language are not there.
This is was a rewarding experience though and really enjoyed the capabilities it offered

The other challenge was also time management and decide what features to cut out to have something testable.

Really happy that while the frontend is not functional, we have tests in typescript that test a full game session using the solidity contract.

Discussion