A 3D fishing game built with Odin and Raylib.
odin_fishing_game/
├── main.odin ← All game code
├── fish.json ← Fish types, probabilities, model paths
├── build.sh ← Build helper script
├── README.md
└── fishes/ ← Put your .glb 3D models here
├── common_carp.glb
├── bluegill.glb
├── bass.glb
├── rainbow_trout.glb
├── catfish.glb
├── pike.glb
├── golden_koi.glb
└── dragonfish.glb
From the project root (where odin-linux-amd64-nightly+2026-03-03/ lives):
# Run directly
./odin-linux-amd64-nightly+2026-03-03/odin run odin_fishing_game \
-extra-linker-flags:"-lraylib -lGL -lm -lpthread -ldl -lrt -lX11"
# Or build first
chmod +x odin_fishing_game/build.sh
./odin_fishing_game/build.sh
cd odin_fishing_game && ./fishing_gameNote: Raylib must be installed system-wide. On Ubuntu/Debian:
sudo apt install libraylib-devOr build from source: https://github.com/raysan5/raylib
| Key | Action |
|---|---|
SPACE |
Cast line / Hook fish when biting / Skip result screen |
R |
Recast line while waiting |
| Right-click drag / Arrow keys | Rotate camera (orbital mode) |
ESC |
Quit |
- Press SPACE to cast your line into the pool
- Wait for a bite — the bobber will dip and flash
- Press SPACE quickly when you see
!! BITE !! - Watch your catch fly into the bucket!
| Fish | Rarity | Chance |
|---|---|---|
| Common Carp | Common | 30% |
| Bluegill | Common | 25% |
| Bass | Uncommon | 18% |
| Rainbow Trout | Uncommon | 12% |
| Catfish | Rare | 7% |
| Pike | Rare | 5% |
| Golden Koi | Epic | 2% |
| Mythic Dragonfish | Legendary | 1% |
- Export your fish model as
.glb - Drop it in
odin_fishing_game/fishes/ - Update
fish.json— set"model_path"to"fishes/your_fish.glb"
The game falls back to a colorful procedural fish shape if no model file is found.
{
"fishes": [
{
"name": "My Fish",
"rarity": "Common",
"probability": 0.30,
"model_path": "fishes/my_fish.glb",
"color": [0.7, 0.5, 0.2],
"scale": 0.8
}
]
}Probabilities should sum to 1.0. color is RGB in [0..1] range and is used as a tint on the 3D model as well as the procedural fallback mesh.