Игра рассчитана на двух игроков из разных устройств: доступны приватные комнаты, раунды, матч до трёх побед и реванш. Клиент построен на TypeScript, Vite и Three.js, сервер — на Node.js, TypeScript и WebSocket библиотеке ws.
ОпубликовалИзображения созданы с помощью GPT Image 2
Ответ на исследование

Create a landscape editorial hero image for this Studio Global article: Selected skill instructions for this user request: 1. اريد منك دائما التحدث عبر كود يعني ان تتجدث عبر صندوق الكود وليس عبر الدردش Apply thes. Article summary: فيما يلي تسليم عملي باسم «Mace Duel Mobile» يعمل في متصفح الهاتف والكمبيوتر، ويستخدم: TypeScript + Vite + Three.js في العميل، وNode.js + TypeScript + ws في الخادم.. Topic tags: deepresearch, general web, workflow, code, typescript. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with fake numbers, clickbait thumbnails, icons,
Mace Duel Mobile — это заготовка браузерной PvP-дуэли для мобильных устройств и ПК. Два игрока подключаются к одной приватной комнате, сражаются на арене булавами, используют ветровые заряды для подброса и отталкивания соперника, проходят раунды и могут запросить реванш после завершения матча.
Техническая основа проекта:
ws;Такой подход важен для соревновательной игры: итог попадания, объём урона и победитель определяются сервером, а не браузером игрока.
Мобильная схема ориентирована на игру в горизонтальной ориентации:
Одновременная работа нескольких касаний позволяет, например, двигаться, менять направление взгляда и нажимать кнопку атаки без переключения между действиями. Для этого подходят Pointer Events и мультитач-подходы, описанные в документации по мобильному управлению. 1
На компьютере сохраняются привычные клавиатурное управление и мышь.
В основе поединка лежат три механики.
Обычная атака проверяется на сервере: соперник должен быть в радиусе удара и в секторе перед персонажем. У удара есть задержка между применениями, а успешное попадание отнимает здоровье и добавляет отбрасывание.
Если игрок атакует в момент снижения после достаточного падения, обычный удар превращается в усиленный. Урон растёт вместе с пройденной высотой, но ограничен максимальным значением. Это делает прыжки и вертикальное позиционирование частью тактики, а не только способом перемещения.
У каждого игрока есть ограниченный запас зарядов, который восстанавливается со временем. Заряд выпускается по направлению взгляда, а при столкновении или завершении полёта создаёт область воздействия: она отталкивает и подбрасывает персонажей поблизости. Заряд можно применять для атаки, ухода от соперника или подготовки мощного удара сверху.
В проекте клиент не сообщает серверу «я нанёс 50 урона» или «я уже нахожусь в этой точке». Вместо этого он отправляет только:
Сервер валидирует сообщения, обрабатывает их последовательность, моделирует физику и рассылает игрокам снимки состояния. В эти снимки входят позиции, скорости, здоровье, заряды, счёт, состояние раунда и видимые снаряды.
Для более справедливой проверки удара сервер сохраняет короткую историю позиций игроков и может учитывать часть задержки соединения при расчёте попадания. Это не устраняет сетевую задержку полностью, но уменьшает число ситуаций, когда удар визуально выглядел точным, а сервер видел противника уже в другой точке.
Проект разделён на три логические части:
client/ или src/ — трёхмерная сцена, интерфейс, звук, ввод с мыши и сенсорного экрана, локальное сглаживание движения;server/ — комнаты, игровой цикл, игроки, снаряды, здоровье, раунды, heartbeat и проверка сообщений;shared/ — общие типы сетевого протокола, игровые константы и формулы расчёта урона.Комнаты рассчитаны на двух участников. Игрок создаёт комнату, получает короткий код и передаёт его второму участнику. После того как оба подтвердили готовность, начинается обратный отсчёт, затем раунд. Победа в матче присуждается после трёх выигранных раундов.
Three.js подходит для компактной трёхмерной арены в браузере. Когда на сцене много одинаковых объектов — например, плиток пола, камней или декоративных элементов, — имеет смысл использовать InstancedMesh: это специальный вариант меша с поддержкой инстансного рендеринга. 2
Тени также стоит делать настраиваемыми. В WebGLRenderer поддержка shadow maps по умолчанию выключена, а динамические обновления теней можно отключать, если они не нужны постоянно. 4 Это особенно полезно для мобильных устройств, где качество изображения нужно балансировать с плавностью игры.
В описанной реализации предусмотрены:
Следующий практический шаг для такого прототипа — собрать интерфейс комнаты, добавить визуальные эффекты ударов и взрывов, звуковую обратную связь, экран результатов и полноценное тестирование игры на реальных смартфонах с разной задержкой сети.
Studio Global AI
На этой странице есть ответ, подтвержденный источником, который вы можете продолжить внутри Studio Global.
Игра рассчитана на двух игроков из разных устройств: доступны приватные комнаты, раунды, матч до трёх побед и реванш.
Игра рассчитана на двух игроков из разных устройств: доступны приватные комнаты, раунды, матч до трёх побед и реванш. Клиент построен на TypeScript, Vite и Three.js, сервер — на Node.js, TypeScript и WebSocket библиотеке ws.
Сервер остаётся авторитетным: он рассчитывает перемещение, попадания, урон, здоровье, снаряды и исход раунда.