Разработка десктопной игры на Cplay и Tauri: от кода до MSI-установщика

freeCodeCamp.org 45,3 тыс. 1 ч 31 мин 3 мин 07.08.2024
Главное

Создание десктопных игр на JavaScript долгое время ограничивалось веб-браузерами, однако современные технологии позволяют превращать веб-проекты в полноценные установочные приложения для ПК. В этом руководстве автор под псевдонимом JS Legend показывает, как использовать связку библиотеки Cplay (ранее известной как Kaboom.js) и платформы Tauri для разработки игры в стиле Flappy Bird с поддержкой различных устройств ввода и системы сохранений на жестком диске.

🛠️ Технологический стек: Почему Tauri лучше Electron? 4:25

Традиционным выбором для переноса JavaScript на десктоп долгое время считался Electron, однако автор видео отдает предпочтение современному инструменту Tauri . Основное различие заключается в способе отрисовки:

По мнению спикера, Tauri проще в настройке, хотя и требует установки Rust для сборки проекта. Важным преимуществом является наличие JavaScript API для работы с файловой системой, что позволяет новичкам реализовывать сохранение данных без глубокого погружения в системное программирование .

🏗️ Подготовка окружения и архитектура проекта 8:03

Процесс создания игры начинается с инициализации проекта через команду npm create tauri-app. Автор рекомендует использовать шаблон React для удобства работы с API Tauri, но при этом предлагает удалить все зависимости React и переписать интерфейс на чистом JavaScript, чтобы не перегружать игровую логику лишними абстракциями .

Для отрисовки графики и обработки физики используется библиотека Cplay (версия 3000.0.1.7). Ключевые настройки контекста игры включают:

🎮 Реализация игровых механик и управление 17:36

Главный герой, птица по имени Creby, представляет собой объект с компонентами спрайта, физического тела и области столкновения (hitbox). JS Legend подчеркивает важность «честного» геймдизайна: хитбокс игрока намеренно сделан меньше визуального спрайта (8x5 пикселей при размере персонажа 16x16), чтобы уменьшить раздражение игрока при близких контактах с препятствиями .

В игре реализована мультиплатформенная система управления:

  1. Клавиатура: прыжок при нажатии пробела .
  2. Мышь: прыжок по клику .
  3. Геймпад: использование кнопки «South» (A на Xbox или X на PlayStation). JS Legend объясняет, что использование именования по сторонам света позволяет коду быть независимым от типа контроллера .

Особое внимание уделено фоновым объектам. Для создания эффекта бесконечного полета используется трюк с «телепортацией» облаков: когда группа облаков уходит за правую границу экрана (координата X > 700), она мгновенно перемещается далеко за левую границу (X = -500), создавая цикличную анимацию .

💾 Работа с файловой системой и сохранениями 56:40

В отличие от веб-игр, где данные часто хранятся в Local Storage и могут быть удалены при очистке кэша браузера, десктопная игра на Tauri позволяет надежно записывать прогресс в файлы .

Для реализации системы рекордов автор настраивает файл конфигурации tauri.conf.json, открывая права на чтение и запись в папку appLocalData . Процесс сохранения выглядит следующим образом:

📦 Сборка и дистрибуция 1:28:22

Финальный этап — создание установочного файла. Команда npm run build инициирует сложный процесс компиляции, на выходе которого разработчик получает файл формата .msi или .exe .

JS Legend настоятельно рекомендует распространять именно установщик (MSI), а не простой исполняемый файл. Это связано с тем, что установщик автоматически проверяет наличие в системе пользователя среды выполнения WebView2 Runtime и устанавливает её при необходимости. Без этой среды игра на базе Tauri просто не запустится на старых версиях Windows 10 или Windows 7 . В завершение автор напоминает о необходимости добавить поле shortDescription в конфигурацию, чтобы при наведении курсора на иконку игры пользователь видел описание, а не стандартную надпись «Tauri App» .

💬 Цитаты

«Главное преимущество десктопной игры на JavaScript — возможность сохранять данные на диск, так как Local Storage в браузере ненадежен.»

«Поскольку Tauri использует системный WebView, ваше пустое приложение весит копейки по сравнению с монструозным Electron.»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Tauri
Фреймворк для создания десктопных приложений с использованием веб-технологий для фронтенда и Rust для бэкенда.
WebView2
Системный компонент Windows, использующий движок Microsoft Edge для отображения веб-контента в приложениях.
Cplay
Легковесная игровая библиотека для JavaScript, ориентированная на быструю разработку 2D-игр.
Hitbox
Невидимая геометрическая фигура, используемая для определения столкновений между игровыми объектами.
📊 Цифры
🗓 Хронология
  1. 2024 Ребрендинг библиотеки Kaboom.js в Cplay (упоминается как текущий контекст курса).
  2. Этап 1 Инициализация проекта через npm create tauri-app.
  3. Этап 2 Настройка разрешений в tauri.conf.json для доступа к файловой системе.
  4. Этап 3 Сборка финального MSI-пакета через npm run build.
⚖️ Другая сторона
Технологии и IT Tauri Cplay JavaScript GameDev Node.js