# NETfishing

NETfishing is a multiplayer-first fishing game built with Godot 4.7. The
current pre-alpha includes host-authoritative fishing and economy flows,
freshwater and saltwater habitats, persistent player data, social features,
customization, jobs, and a controller-aware interface.

The project is under active development. Interfaces, balance, content, and
save migrations may continue to change before a stable release.

## Requirements

- Godot 4.7.x with the GL Compatibility renderer
- Linux, Windows, or an Android development environment supported by Godot
- Bash for the repository helper scripts

Open `project.godot` in Godot, or start the editor from the repository root:

```sh
godot --editor --path .
```

Run the game directly with:

```sh
godot --path .
```

## Validation

The validation scripts isolate Godot's settings and application-data roots.
Run the fast, deterministic suite before submitting a change:

```sh
scripts/run_validations.sh quick
```

Additional suites and individual commands are documented in
[`docs/TESTING.md`](docs/TESTING.md).

## Building

Export presets are maintained for Linux, Windows, and Android. Repository
scripts expect the matching Godot export templates and platform toolchains to
already be installed:

```sh
scripts/build_playtest.sh
scripts/build_android_debug.sh
```

Build outputs belong under the ignored `builds/` directory. Release builds
must follow the project's separate tagged-release checklist; these convenience
scripts do not create or publish tags.

## Project map

- `main/`: composition root and application orchestration
- `world/`: map, environment, water, and world presentation
- `player/`, `fishing/`, `fish/`: player and fishing domain
- `network/`: transport, identity, and host-authoritative services
- `inventory/`, `items/`, `economy/`, `progression/`, `jobs/`: game state
- `save/`, `settings/`: versioned persistence
- `ui/`: gameplay and menu presentation
- `tests/`: focused Godot validation scripts
- `scripts/`: build, bake, and validation entry points

See [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) and
[`world/README-WORLD-AUTHORING.md`](world/README-WORLD-AUTHORING.md) for more
detail.
