Skip to content

suga-ucsd/fishing-game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎣 Odin Fishing Game

A 3D fishing game built with Odin and Raylib.

Project Structure

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

Running

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_game

Note: Raylib must be installed system-wide. On Ubuntu/Debian:

sudo apt install libraylib-dev

Or build from source: https://github.com/raysan5/raylib

Controls

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

Gameplay

  1. Press SPACE to cast your line into the pool
  2. Wait for a bite — the bobber will dip and flash
  3. Press SPACE quickly when you see !! BITE !!
  4. Watch your catch fly into the bucket!

Fish & Rarities

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%

Adding Your Own 3D Models

  1. Export your fish model as .glb
  2. Drop it in odin_fishing_game/fishes/
  3. 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.

fish.json Format

{
  "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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors