https://github.com/philogicae/ethbuc2025-gyges
Implementation of Gyges, a strategy board game, during EthBucharest Hackathon 2025
https://github.com/philogicae/ethbuc2025-gyges
arbitrum arbitrum-stylus gamefi rust solidity
Last synced: about 1 month ago
JSON representation
Implementation of Gyges, a strategy board game, during EthBucharest Hackathon 2025
- Host: GitHub
- URL: https://github.com/philogicae/ethbuc2025-gyges
- Owner: philogicae
- Created: 2025-04-04T14:31:02.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-21T15:53:32.000Z (about 1 year ago)
- Last Synced: 2026-05-24T01:33:37.590Z (about 1 month ago)
- Topics: arbitrum, arbitrum-stylus, gamefi, rust, solidity
- Language: Rust
- Homepage:
- Size: 433 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# EthBucharest 2025 - Gyges
Implementation of [Gyges](https://boardspace.net/english/about_gyges.html), a strategy board game.
Why this game? Because nobody knows it and the rules seem to be simple on paper... but the game is actually complex and pretty deep when we take a closer look (like Go).
The duration of a game can go from 10 seconds to 2 hours, if the levels of the players are close.
As a solidity dev, it was the perfect opportunity to discover Arbitrum Stylus, refresh my Rust, and have fun with low-level optimizations (Yes it's FUN).
## How to play
Read the rules: [here](https://boardspace.net/english/about_gyges.html)
## Stack
- Rust language
- [Arbitrum Stylus](https://arbitrum.io/stylus)
- [Nitro-devnode](https://docs.arbitrum.io/run-arbitrum-node/run-nitro-dev-node) for local tests
- Some python/bash scripts as minimal CLI
## Notes
Tbh I focused on understanding the specificities of Rust/Stylus and optimizing EVM storage (The state of the game fits on a single bytes32).
Didn't have time to:
- Restrict paths properly: should not be able to pass by an occupied cell or a cell already used during the turn.
- Placement restriction when 'flying' (after replacing a piece): can place a piece on any empty cell, but should not be able to go behind the opponent line.
## TODO's
* Improve the smart contract:
- Heavy refactoring
- Add missing restrictions
- Add winner check
* Build the webUI (probably with React)
* Add AI opponent using LLM agent