Endless Sea

Endless Sea is a small browser survival game built with HTML5 canvas, jQuery, and plain JavaScript. You guide a fish through an underwater bullet-hell style field, avoid incoming hazards, and collect diamonds to trigger temporary power-ups.

Play

How To Play

  • Move the mouse to steer the fish.
  • Avoid every flying object except diamonds.
  • Collect diamonds to gain temporary bonuses.
  • Press Space, Enter, or P to pause and resume.
  • Use headphones if you want the full audio experience.

Power-Ups

Diamonds can trigger one of several effects:

  • Score bonus
  • Speed Down
  • 1 UP
  • Superfish invincibility
  • Big Bomb screen clear
  • Small World size reduction

Running Locally

This project is static and does not require a build step.

  1. Clone or download the repository.
  2. Open index.html in a modern browser.

If your browser blocks autoplay audio, start the game with a click so music playback can begin normally.

Desktop Builds

This repository includes a Tauri desktop wrapper under src-tauri/. The frontend is copied into dist/ before each desktop build.

Build Overview

  1. Install Bun.
  2. Install Rust.
  3. Install the platform-specific Tauri dependencies for the OS you are building on.
  4. Run bun install.
  5. Run one of the build commands below.

Shared Project Setup

Install dependencies once per clone:

bun install

You can also stage the static frontend manually:

bun run build:web

That copies index.html, css/, js/, and music/ into dist/.

Linux Native Build

The Linux build has been verified on this repository and currently produces .deb and .rpm bundles.

Install Bun on Linux:

curl -fsSL https://bun.sh/install | bash

Install Rust on Linux:

curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

If Bun or Rust are not on your shell PATH yet, restart the terminal before continuing.

Install the Tauri system packages for your distribution.

Debian or Ubuntu:

sudo apt update
sudo apt install \
  libwebkit2gtk-4.1-dev \
  build-essential \
  curl \
  wget \
  file \
  libxdo-dev \
  libssl-dev \
  libayatana-appindicator3-dev \
  librsvg2-dev \
  patchelf \
  rpm

Fedora:

sudo dnf check-update
sudo dnf install \
  webkit2gtk4.1-devel \
  openssl-devel \
  curl \
  wget \
  file \
  libappindicator-gtk3-devel \
  librsvg2-devel \
  libxdo-devel \
  patchelf \
  rpm-build
sudo dnf group install "c-development"

Build the Linux desktop packages:

bun install
bun run tauri:build:linux

Expected outputs:

  • src-tauri/target/release/bundle/deb/Endless Sea_0.1.0_amd64.deb
  • src-tauri/target/release/bundle/rpm/Endless Sea-0.1.0-1.x86_64.rpm

Windows Native Build

For a full Windows installer, build on a Windows machine. This is the most reliable path.

Install Bun in PowerShell:

irm bun.sh/install.ps1 | iex

Install Rust with the MSVC toolchain:

winget install --id Rustlang.Rustup
rustup default stable-msvc

Install the required Windows components:

  1. Install Microsoft C++ Build Tools.
  2. In the installer, enable Desktop development with C++.
  3. Make sure Microsoft Edge WebView2 Runtime is installed.

Build the Windows installer:

bun install
bun run tauri:build

Expected output:

  • src-tauri/target/release/bundle/nsis/Endless Sea_0.1.0_x64-setup.exe

Windows Cross-Build From Linux

If you are on Linux and only need a Windows .exe, you can cross-compile it without packaging an installer.

Install the extra cross-build tools:

sudo apt update
sudo apt install nsis lld llvm
rustup target add x86_64-pc-windows-msvc
cargo install --locked cargo-xwin

Build the Windows executable only:

bun install
bun run tauri:build:windows:exe

Expected output:

  • src-tauri/target/x86_64-pc-windows-msvc/release/endless-sea.exe

If you want to attempt a full NSIS installer from Linux, use:

bun install
bun run tauri:build:windows:cross

Important note:

  • Cross-compiling the Windows installer from Linux is experimental in Tauri.
  • On this machine, the executable build worked, but the NSIS installer step failed because makensis.exe was not available in the Linux environment.
  • If you need a reliable signed installer, use a real Windows build machine.

Build Outputs

  • Browser-ready static build: dist/
  • Linux desktop binary: src-tauri/target/release/endless-sea
  • Linux bundles: src-tauri/target/release/bundle/
  • Windows cross-compiled binary: src-tauri/target/x86_64-pc-windows-msvc/release/endless-sea.exe

Troubleshooting

  • If bun is not found after installation, restart the shell or add Bun to your PATH.
  • If cargo or rustup are not found, restart the shell so Cargo's environment is loaded.
  • If Linux packaging fails with missing GTK or WebKit packages, re-check the distro-specific dependency list above.
  • If a Windows installer build fails on Linux around NSIS, fall back to the .exe cross-build or build natively on Windows.

Project Notes

  • Most visible game elements are generated dynamically in JavaScript.
  • All game graphics are drawn in code with canvas rather than external image assets.
  • Audio files are included in the repository under music/.

Credits

Developers:

  • Bobwei Zhou
  • Yangmei Lin

Original development period:

  • July 12, 2014 to July 16, 2014
Description
Game.
Readme 4.7 MiB
Languages
JavaScript 91.1%
CSS 6.6%
Rust 1.6%
HTML 0.7%