Skip to content

Latest commit

 

History

483 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

$bog_gamengine

Игровой движок на $mol: 2D и 3D на одном рендерере WebGL2 со своим тонким слоем gl/, сцена и правила игры на реактивных объектах, интерфейс игры на обычных view.tree.

Документы:

  • START.md: с чего начать свою игру, от пустого пака до едущего спрайта.
  • ARCHITECTURE.md: принятые решения, модули, кадр, грабли $mol_3d.
  • PLAN.md: этапы, задачи под одного молера, приёмка.
  • STYLE.md: как писать код именно в этом паке.
  • COMPARE.md: чем движок отличается от Godot и Bevy и когда что брать.

Демо: https://b-on-g.github.io/gamengine/ (страницы quad, flat, room). Движок не использует $mol_3d_pane и программную обвязку мола, только $mol_3d_mat4, $mol_3d_shape, $mol_3d_image и строки $mol_3d_glsl; причина в архитектуре, раздел 3.

Управление: WASD и стрелки, Q/E поворот в комнате, клик по монете, звук после первого клика.

Офлайн и установка

Демо ставит service worker мола (include \/mol/offline/install в demo/demo.meta.tree): после первого визита страница открывается без сети. Политика обновления после деплоя:

  • обычный заход отдаёт бандл из кэша, страница стартует на старой версии, через две-три секунды воркер находит новую, пишет в консоль Outdated и сам перезагружает страницу, второй заход уже свежий;
  • перезагрузка страницы (F5) всегда идёт в сеть, новая версия видна сразу;
  • запрос с ? в адресе воркер не перехватывает вовсе.

На дев-сервере все приложения живут на одном origin, и после пересборки браузер раз-другой отдаёт старый web.js. Снести воркер и кэш можно из консоли, или открыть 127.0.0.1:9080 вместо localhost: на IP воркер не ставится.

demo/manifest.json делает демо устанавливаемым приложением: полный экран, альбомная ориентация, иконки demo/icon/hero-192.png и hero-512.png (герой из атласа, увеличен без сглаживания). Сборщик сливает его с манифестом по умолчанию в demo/-/manifest.json, а demo/index.html ссылается на него через <link rel="manifest">.

Полный экран и захват курсора

$bog_gamengine_screen (screen/): fullscreen? переводит документ в полный экран, lock? захватывает курсор на холсте из target. Оба запроса браузер принимает только из жеста пользователя, поэтому fullscreen( true ) и lock( true ) зовут из обработчика клика; сама DOM-побочка выполняется через тик. Escape снимает захват и полный экран, события fullscreenchange и pointerlockchange возвращают флаги в актуальное состояние. Движение мыши при захвате копится в dx, dy, ходок забирает его в step через take( out ) и поворачивает камеру.

Десктоп

Сборка в Tauri по рецепту bog/mol_skill/references/TAURI_SETUP.md:

  • Rust и системные зависимости из раздела prerequisites рецепта;
  • tauri init с dist на bog/gamengine/demo/- и дев-адресом http://localhost:9080/bog/gamengine/demo/;
  • tauri build после сборки бандла, готовый пакет в src-tauri/target/release/bundle.

Единственная страница пака: demo/index.html. Донор кода: пак bog/game (форк hyoo-ru/game.hyoo.ru), его eye это прототип модуля draw.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages