Inspiration

Gemlocks is a project I originally started in 2019, during the pandemic. At that time, personal circumstances forced me to put it aside. Today, I feel it’s the perfect moment to bring it back and take it to new heights. I believe it has the potential to seamlessly combine engaging gameplay with blockchain technology, provable games, and the Starknet ecosystem.

The concept is inspired by an anonymous strategy game I discovered through the Argentine mathematician Paenza’s book “Matemática, ¿estás ahí?” (“Maths, are you there?”). That book ignited my passion for logic and algorithms as a child. Ever since, I’ve played this game on paper whenever I had the chance with classmates. My goal is to bring it into the virtual world, creating a platform where players can challenge their minds while being entertained. The game could also include in-app purchases, gem systems, and mini-games to make it even more engaging.

It was originally called "Numlock", but "Gemlocks" is more related to gems, the actual currency that will be handled inside this game.

Game Rules

Gemlocks is a simple game with fast matches, lasting about 10 minutes.

  • It is played between two players (future updates may allow more), with global matchmaking based on user ranking. For now, a simple “all-versus-all” algorithm pairs players seeking opponents.
  • At the start, each player has about one minute to choose a code consisting of 4 unique digits from 0 to 9 (future versions may allow more digits or different characters like emojis). If time runs out, the remaining digits are assigned randomly.
  • A coin toss decides who goes first. The second player receives an extra turn at the end of the game.
  • On their turn, players make guess attempts, which are also 4-digit codes without repeated numbers. They can request hints (4 random codes to choose from) if undecided.
  • Each guess is compared to the opponent’s code: digits in the correct position count as Perfect, digits in a wrong position count as Regular. Players use this feedback to deduce the opponent’s code.
  • The game ends when a player achieves 4 Perfects. If the first player reaches 4 Perfects, the second player gets a final turn. If the second player also reaches 4 Perfects, the match ends in a tie.

How we built it

Numlock (old version) was build with Solar2D (formerly Corona SDK).

By the time, it's using the following Stack:

  • Frontend: Expo + React Native
  • Backend: feathersJS + knex

Both are being translated to Cairo and Dojo Engine.

Challenges we ran into

Building Gemlocks has been both challenging and educational. I had to revisit old code, rethink gameplay mechanics for the digital world, and learn the nuances of blockchain integration, though it'll be one of the last steps. Deadline times are also one of the challenges, since I heard about this hackathon once it had already started.

What we learned

I was introduced to Starknet ecosystem and Dojo engine, which I'll be using to go ahead with the project. Through this project, I’ve learned not only technical skills like blockchain development and game logic, but also the importance of perseverance and revisiting ideas when the timing is right. Gemlocks represents both a personal journey and a vision for a smarter, more interactive gaming experience.

What's next for Gemlocks

  • Rebrand Numlock (no crypto and single player against IA) to Gemlocks (multiplayer and with crypto implementation)
  • Smoother game mechanics
  • On-chain implementation
  • Ranking and match-making algorithm
  • Gems acquiring and betting systems

Integrating blockchain technology would add three key benefits:

  • Cryptocurrency and NFT transactions: Players could bet gems, trade items and in-game assets securely.
  • Provable randomness: Ensures that all random elements in the game are genuinely unpredictable (eg.: coin toss, match-making, move suggestions).
  • Game history transparency: Every move would be recorded on-chain, allowing players to verify authorship, participation and real-person identifying (avoiding bots or rigged matches).

Built With

Share this project:

Updates