Skip to content

Repository files navigation

uRay

Интерактивный симулятор распространения звука под водой. Лучевая акустика, вертикальные профили скорости звука, отражения от дна и поверхности.

Что это

uRay — браузерная игра-симулятор. Вы запускаете звуковой луч под углом, он распространяется в слоистой среде по законам лучевой акустики, отражается от дна и поверхности. Цель — попасть в приёмник.

Два режима:

  • Explore — свободное исследование, лучи видны всегда.
  • Game — прицеливание, выстрел, попадание.

Звук синтезируется через WebAudio: импульсный отклик канала, с задержками по временам прихода лучей.

Запуск

Нужен локальный HTTP-сервер (браузер не даёт грузить ES-модули через file://).

python -m http.server 8000
# или
npx serve

Открыть http://localhost:8000.

Управление

  • Drag от источника — прицеливание.
  • Колесо мыши — точная подстройка угла (±0.5°, с Shift — ±5°).
  • ← → — то же с клавиатуры.
  • Space — выстрел (в режиме Game).
  • Сброс — вернуть угол к начальному.

Физика

  • Вертикальный профиль скорости звука c(z), задаётся в уровне.
  • Лучевая трассировка методом Рунге–Кутты 4-го порядка по длине дуги:
dx/ds =  cos(θ)
dz/ds = -sin(θ)
dθ/ds =  (dc/dz) · cos(θ) / c(z)
  • Отражения от поверхности (z=0) и от дна (ломаная линия).
  • Затухание: поглощение + цилиндрическое расхождение + потери при отражениях.

Формат уровня

Текстовый файл, секции в квадратных скобках:

name, "Название уровня"
x_max, 5000
z_max, 1000
source_x, 0
source_z, 100
receiver_x, 4000
receiver_z, 800
receiver_radius, 40

[profile]
0,    1540
200,  1530
500,  1515
1000, 1502

[bottom]
0,    1000
2500, 950
5000, 1000

Уровни перечислены в levels/index.json

About

Underwater sound propagation simulator game

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages