Tarla Faresi is a fast-paced, 2-player turn-based multiplayer browser game where players compete to find fruits hidden in a 10x10 garden grid. Players draw action cards to determine their moves, race against a 5-second timer per turn, and collect fruits to win!
The first player to collect 5 fruits wins the game!
The game is played on a 10x10 grid (100 cells). Hidden beneath the leaves are 22 random fruits: 🍎, 🍌, 🍓, 🍊, and 🍇.
- Draw a Card: At the start of your turn, you must draw a card.
- 5-Second Timer: Once you draw a card, a 5-second timer starts immediately. You must complete your action before the timer runs out. If you fail to act, your turn is skipped.
- Execute Action: Perform the action specified by your card (e.g., click a cell, click a cell to select its row, etc.).
- Collect Fruits: Any fruits revealed by your action instantly go into your basket!
There are 8 different types of cards you can draw:
OPEN_1_CELL: Select any 1 closed cell to open.OPEN_2_CELLS: Select any 2 closed cells to open.OPEN_3_CELLS: Select any 3 closed cells to open.OPEN_FULL_ROW: Select any cell to instantly open its entire row.OPEN_FULL_COLUMN: Select any cell to instantly open its entire column.FORCE_ROW: The server picks a random row. You must select 1 cell from that specific row.FORCE_COLUMN: The server picks a random column. You must select 1 cell from that specific column.PASS: Unlucky! You skip this turn.
The game consists of a Golang WebSockets server and a vanilla HTML5/JS client.
- Go (1.20+)
- A modern web browser
- Clone the repository and navigate to the project directory:
cd tarla-faresi/server - Run the Go server:
The server will start listening on
go run .http://localhost:8080.
- Open your web browser and navigate to:
http://localhost:8080/ - You can open a second tab (or have a friend join on the same network) to act as Player 2.
- Enter your player names.
- The Matchmaker will automatically pair you up into a real-time game!
- Backend: Go (
net/http, Gorilla WebSockets) - Frontend: HTML5, CSS3, Vanilla JavaScript (Mobile-first, 16:9 vertical lock layout)
- Communication: JSON over WebSocket
- Authoritative Server: All game logic, state management, and grid generation/validation run strictly on the Go server, preventing client-side cheating.
- Matchmaking: Players are automatically queued and seamlessly paired into distinct isolated game rooms via a thread-safe
Matchmaker. - Graceful Disconnects: If a player disconnects mid-game, the other player immediately wins by default.