Здравствуйте, подскажите, а то я не нашёл, у вас есть гайд по поводу того, как определить устройство с которого заходит игрок и в зависимости от этого отображать наэкранное управление или нет.
Здравствуйте. Определять, в каком окружении пользователь запускает игру, можно с помощью метода ysdk.deviceInfo нашего SDK. Подробнее в Справке: clck.ru/3DiV6s.
Интересно было бы продемонстрировать enum в switch вместо первого if мне кажется, а так очень классный урок, очень понравился, Спасибо вам и Яндексу за этот курс)
Здравствуйте. Для физических лиц - резидентов РФ из вознаграждения Яндекс самостоятельно удерживает и перечисляет в бюджет налог на доходы 13%. В других случаях налоги и сборы выплачивают партнёры. Подробнее по ссылке: clck.ru/3De6H5
Курс офигенный. Но с камерой это просто жесть, чтобы понять тот алгоритм пришлось на бумажке поле рисовать чтобы плавно и красиво двигался а не просто передать эулеру позицию мыши, а еще сначала ввело в ступор что 0,0 координата мыши начинается внизу слева а не сверху
Подскажите, из за чего ошибки при билде проекта? Буду благодарен за ответ, по идее никаких ошибок в коде нет, пересмотрел несколько раз. Ошибка 1: Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js: D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib: failure to execute js library "D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib": UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) Ошибка 2: Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js: D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib: use -sVERBOSE to see more details UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) Ошибка 3: Building Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js failed with output: error: D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib: failure to execute js library "D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib": error: D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.jslib: use -sVERBOSE to see more details Internal compiler error in src/compiler.js! Please create a bug report at github.com/emscripten-core/emscripten/issues/ with a log of the build and the input files used to run. Exception message: "D:\Unitygames\GeometryParkour\Geometry Parkour\Assets\Yandex\Plugins\my.preprocessed.jslib:50 }; ^ SyntaxError: Unexpected token ';' at new Script (vm.js:88:7) at createScript (vm.js:263:10) at Object.runInThisContext (vm.js:311:10) at Object.load (D:\Unity\2023.2.14f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\src\modules.js:226:12) at runJSify (D:\Unity\2023.2.14f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\src\jsifier.js:95:18) at Object.<anonymous> (D:\Unity\2023.2.14f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\src\compiler.js:109:3) at Module._compile (internal/modules/cjs/loader.js:1138:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10) at Module.load (internal/modules/cjs/loader.js:986:32) at Function.Module._load (internal/modules/cjs/loader.js:879:14) emcc: error: 'D:/Unity/2023.2.14f1/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/node/node.exe D:\Unity\2023.2.14f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\src\compiler.js C:\Users\anjut\AppData\Local\Temp\tmpforkysh5.json --symbols-only' failed (returned 1) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
Здравствуйте. Уведомление «Unexpected token ';'» говорит о том, что в .jslib файле некорректный синтаксис на 50 строчке кода. Вероятно, на этой строке присутствует лишняя точка с запятой или неправильно оформленный код.
Здравствуйте, человек который не является гражданином РФ может зарегистрироваться и вывести денежные средства полученные за рекламу? Заранее спасибо за ответ.
Здравствуйте. С РСЯ могут сотрудничать резиденты любых стран. При этом условия монетизации могут отличаться в зависимости от формы сотрудничества и страны, резидентом которой вы являетесь. Подробнее в Справке РСЯ: clck.ru/3De68F
Вроде получилось всё, но у меня есть отличие. В моменте столкновения с воротами width персонаж расширялся, а с воротами height - не срабатывал. Изменил в скрипте else if на просто if и всё заработало как надо. Не могу понять почему у вас сработало, а у меня только так. Вот ваш вариант скрипта, где у меня срабатывали только изменения по ширине: private void OnTriggerEnter(Collider other) // Метод обнаружения столкновения. { PlayerModifire playerModifire = other.attachedRigidbody.GetComponent<PlayerModifire>(); // Создаём переменную. if (playerModifire) // Если столкновение с объектом, на котором есть компонент с названием PlayerModifier не равно 0, то есть проверяем есть ли он. { if (deformationType == DeformationType.Width) // Если деформация по типу ширины. playerModifire.AddWidth(value); // Деформация по ширине произойдёт исходя из значений на воротах. } else if (deformationType == DeformationType.Height) // в противном случае, если тип деформации по высоте. { playerModifire.AddHeight(value); // Деформация по высоте произойдёт исходя из значений на воротах. } } а если вот так, то и по высота тоже заработала: private void OnTriggerEnter(Collider other) // Метод обнаружения столкновения. { PlayerModifire playerModifire = other.attachedRigidbody.GetComponent<PlayerModifire>(); // Создаём переменную ,чтобы не писать длинный код, а просто использовать переменную для проверки компонента на объекте. if (playerModifire) // Если столкновение с бъектом, на котором есть компонент с названием PlayerModifier не равно 0, то есть проверяем есть ли он. { if (deformationType == DeformationType.Width) // Если деформацию по типу ширины. playerModifire.AddWidth(value); // Деформация по ширине произойдёт исходя из начений на воротах. } if (deformationType == DeformationType.Height) // в противном случае, если тип деформации по высоте. { playerModifire.AddHeight(value); // Деформация по высоте произойдёт исходя из значений на воротах. } }
Здравствуйте. Если речь о типах рендера, то в WebGL поддерживается только «URP» и «SRP». Если вы говорите о разрешение экрана, то для горизонтальных игр подойдёт 16:9, а для вертикальных - 9:16.
Здравствуйте. Концепция нашей платформы подразумевает получение бесплатного опыта в разработке и публикации игр. Подробнее о том, как опубликовать проект, рассказываем в справке: clck.ru/3DYUJC
Норм разбор. Единственно, на будущее - сделайте, если человек начал играть, то пусть будет целиком экран с игровым процессом до окончания этой игры. Сейчас он постоянно прерывается на переключение комнаты с ведущим, часть геймплея упускается.
Здравствуйте а как сделать сохранение ещё и для не авторизованных пользователей? При том что для авторизованных пользователей сохранение сделано по вашему уроку. Заранее спасибо!
Здравствуйте. Прогресс неавторизованных пользователей также можно сохранять с помощью методов player.setData/setStats и player.getData нашего SDK - они актуальны для всех игроков, вне зависимости от авторизации. Подробнее о них в справке: clck.ru/3DTSH4
@@yagamesdev Чтобы неавторизованные пользователи также видели свои рекорды (отображать их на окне следующего уровня или при поражении), например, вы можете сохранять данные в локальном хранилище браузера localStorage, либо использовать облачные сохранение данных об установленном рекорде, например, методом player.setStats для сохранения числовых значений. Вот такой ответ пришел от службы поддержки Яндекса, я понял что player.setData не подходит
Здравствуйте! После билда проекта файл index.html, выглядит немного по другому, (не так как в видео до редактирования). Все равно вместо него можно вставлять ваш? Это нормально? Заранее спасибо за ответ. UPD. Сейчас попробовал вставить ваш файл, игра действительно в полно экранном режиме. но дальше полосы загрузки не грузится. Если что код который выдал юнити после билда: (index.html) Как его нужно правильно изменить? <!DOCTYPE html> <html lang="en-us"> <head> <meta charset="utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Unity Web Player | GeometryParkour</title> <link rel="shortcut icon" href="TemplateData/favicon.ico"> <link rel="stylesheet" href="TemplateData/style.css"> </head> <body> <div id="unity-container" class="unity-desktop"> <canvas id="unity-canvas" width=960 height=600 tabindex="-1"></canvas> <div id="unity-loading-bar"> <div id="unity-logo"></div> <div id="unity-progress-bar-empty"> <div id="unity-progress-bar-full"></div> </div> </div> <div id="unity-warning"> </div> <div id="unity-footer"> <div id="unity-logo-title-footer"></div> <div id="unity-fullscreen-button"></div> <div id="unity-build-title">GeometryParkour</div> </div> </div> <script> var canvas = document.querySelector("#unity-canvas"); // Shows a temporary message banner/ribbon for a few seconds, or // a permanent error message on top of the canvas if type=='error'. // If type=='warning', a yellow highlight color is used. // Modify or remove this function to customize the visually presented // way that non-critical warnings and error messages are presented to the // user. function unityShowBanner(msg, type) { var warningBanner = document.querySelector("#unity-warning"); function updateBannerVisibility() { warningBanner.style.display = warningBanner.children.length ? 'block' : 'none'; } var div = document.createElement('div'); div.innerHTML = msg; warningBanner.appendChild(div); if (type == 'error') div.style = 'background: red; padding: 10px;'; else { if (type == 'warning') div.style = 'background: yellow; padding: 10px;'; setTimeout(function() { warningBanner.removeChild(div); updateBannerVisibility(); }, 5000); } updateBannerVisibility(); } var buildUrl = "Build"; var loaderUrl = buildUrl + "/GeometryParkour.loader.js"; var config = { arguments: [], dataUrl: buildUrl + "/GeometryParkour.data.unityweb", frameworkUrl: buildUrl + "/GeometryParkour.framework.js.unityweb", codeUrl: buildUrl + "/GeometryParkour.wasm.unityweb", streamingAssetsUrl: "StreamingAssets", companyName: "studio89", productName: "GeometryParkour", productVersion: "1.0", showBanner: unityShowBanner, }; // By default, Unity keeps WebGL canvas render target size matched with // the DOM size of the canvas element (scaled by window.devicePixelRatio) // Set this to false if you want to decouple this synchronization from // happening inside the engine, and you would instead like to size up // the canvas DOM size and WebGL render target sizes yourself. // config.matchWebGLToCanvasSize = false; if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)) { // Mobile device style: fill the whole browser client area with the game canvas: var meta = document.createElement('meta'); meta.name = 'viewport'; meta.content = 'width=device-width, height=device-height, initial-scale=1.0, user-scalable=no, shrink-to-fit=yes'; document.getElementsByTagName('head')[0].appendChild(meta); document.querySelector("#unity-container").className = "unity-mobile"; canvas.className = "unity-mobile"; // To lower canvas resolution on mobile devices to gain some // performance, uncomment the following line: // config.devicePixelRatio = 1; } else { // Desktop style: Render the game canvas in a window that can be maximized to fullscreen: canvas.style.width = "960px"; canvas.style.height = "600px"; } document.querySelector("#unity-loading-bar").style.display = "block"; var script = document.createElement("script"); script.src = loaderUrl; script.onload = () => { createUnityInstance(canvas, config, (progress) => { document.querySelector("#unity-progress-bar-full").style.width = 100 * progress + "%"; }).then((unityInstance) => { document.querySelector("#unity-loading-bar").style.display = "none"; document.querySelector("#unity-fullscreen-button").onclick = () => { unityInstance.SetFullscreen(1); }; }).catch((message) => { alert(message); }); }; document.body.appendChild(script); </script> </body> </html>
Здравствуйте. Данный код выглядит корректно. При этом необходимо проверить, что все файлы, которые указаны в коде, присутствуют в архиве по нужным путям.
Здравствуйте. На нашей платформе можно публиковать проекты на любых движках, которые подходят для веб-игр. Главное, чтобы в корне архива присутствовал файл index.html. Подробная инструкция по добавлению проекта в Руководстве разработчика: clck.ru/3DRNyz. Отметим, что движок должен уметь обращаться к JS, чтобы использовать методы SDK Яндекс Игр. Его интеграция является обязательным условием для прохождения модерации. Подробнее в Справке: clck.ru/3DRNy6.
Здравствуйте. Все методы нашего SDK описаны в справке. Для вызова полноэкранного блока необходимо использовать метод ysdk.adv.showFullscreenAdv(). Подробнее по ссылке: clck.ru/3DPLAR
Сколько всяких уроков по анимации пересмотрел от различных школ, только запутали больше. А тут 20 минут, всё по полочкам, просто напечатал следом конспект и во всём разобрался. Теперь осмысленно использую функции аниматора, а не методом тыка, или запоминанием без понимания. Спасибо автору курса, и отдельно за подачу материала!
Здравствуйте. При работе с методом player.setData(data, flush) действительно есть ограничения в 200 КБ. При этом вы можете также использовать внешние хосты для хранения данных игрока. Отметим, что запросы к ним по умолчанию блокируются платформой. Но вы можете добавить нужные адреса в исключения. Для этого откройте консоль, вкладка «Настройки» - «Правила для CSP». В поле «Хосты» пропишите адреса в формате cdn.example.com. Они должны быть c фиксированным доменом и защищённым протоколом https или wss. В поле «Причина использования хостов» подробно опишите, для каких целей в игре отправляются запросы к сторонним адресам. Далее нажмите «Сохранить» - коллеги рассмотрят запрос. Можно использовать внешние хосты, которые уже разрешены на платформе. Полный список в этой статье: clck.ru/3DLkLn.
Пожалуйста очень просим сделать видео как и куда правильно добавить ysdk.features.LoadingAPI.ready() и ysdk.features.GameplayAPI.start() и ysdk.features.GameplayAPI.stop() Куда все это добавить в index.shtml? Куда бы на ставил модерация говорит что зеленый огонек зажигается слишком рано и не пропускает игру. В документации слишком неразборчиво
Здравствуйте. Подумаем над тем, чтобы снять отдельное видео на тему GameReady API. Отметим, что метод нужно активировать после всех загрузочных экранов и сцен с логотипами разработчика или движка. Например, при запуске стартового меню. В этот момент индикатор загрузки SDK должен загораться зелёным. Подробнее в Справке: clck.ru/3DGXPJ.
Здравствуйте. На нашей платформе можно публиковать проекты на любых движках, которые подходят для веб-игр. Главное, чтобы в корне архива присутствовал файл index.html. Подробная инструкция по добавлению проекта в руководстве разработчика: clck.ru/3DFv3a Отметим, что движок должен уметь обращаться к JS, чтобы использовать методы SDK Яндекс Игр. Его интеграция является обязательным условием для прохождения модерации. Подробнее в справке: clck.ru/3DFv4D
Здравствуйте. В видео с разбором попадают проекты из топ-5 за месяц, а также из множества игр, которые разработчики отправляют нам через специальную форму: clck.ru/3DFuwZ При этом выбор происходит совместно с экспертом, чтобы у него была возможность дать развёрнутый комментарий и советы по игре.
Здравствуйте. ПОМОГИТЕ разобраться!!! Когда делаю билд игры, он выдает кучу ошибок такого типа: Building Library\Bee\artifacts\WebGL\GameAssembly\master_WebGL_wasm\8k2g1bcnj5lw.o failed with output: emcc2: error: no input files UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) UnityEditor.BuildPlayerWindow+BuildMethodException: 237 errors at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x002da] in <06837d428b6d46f581d93f9597703696>:0 at UnityEditor.BuildPlayerWindow.CallBuildMethods (System.Boolean askForBuildLocation, UnityEditor.BuildOptions defaultBuildOptions) [0x00080] in <06837d428b6d46f581d93f9597703696>:0 UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) КАК ЭТО МОЖНО ИСПРАВИТЬ?????????????????
Здравствуйте. Подобное уведомление может появляться, если у вас отсутствует или некорректно установлен WebGL модуль для Unity. В этом случае необходимо перейти в Unity Hub, выбрать версию движка и проверить, установлен ли данный модуль. Также рекомендуем проверить, корректно ли написан код. Возможно, именно из-за него проект не билдится. Также в этом случае можно переустановить папку «Library» проекта. Для этого удалите её и запустите проект заново.
При первом обновлении страницы с игрой сохранения регистрируются и выводятся. Но уже при втором обновлении данные сбрасываются к дефолтным. С чем это может быть связано?
Здравствуйте. Вероятно, во время второго обновления страницы Unity перезаписывает данные на стандартные и сохраняет их на сервер. Необходимо внимательно проверить логику сохранений.
Здравствуйте! Большое Вам спасибо за Ваши труды. Вы очень подробно раскрываете материал в своих видео уроках. Скажите, пожалуйста, с чего нужно начать для создания простых игр в Unity? Прошел полностью Ваш курс по созданию игры (человек, который собирает монеты). Всё получилось. Просматривал уроки по несколько раз для того, чтобы более детально разобраться с каждым действием в игре. Вроде всё просто и понятно, но на самом деле в голове "Каша". Может я не с того начинаю, или просто мне это не дано? Большое Вам спасибо ещё раз! Буду очень Вам признателен за любой совет.
Здравствуйте. Спасибо за позитивный отзыв. Рады, что курс вам понравился ❤️ Как продолжить обучение подсказать с нашей стороны не получится. Но мы точно знаем, что в жизни всё возможно. У вас также получится стать разработчиком при должном желании, усидчивости и стремлении 🙂
Здравствуйте. Обычно подобное уведомление связано с использованием ссылок с S3. Вероятно, сейчас подключение SDK происходит с помощью скрипта <script src="sdk.games.s3.yandex.net/sdk.js"></script>. Этот способ актуален только при добавлении игры через . При загрузке игры через архив SDK необходимо подключать с помощью <script src="/sdk.js"></script>. Подробнее по ссылке: clck.ru/3D5hdr
Добрый день. Уведомление «Файл содержит URL-адрес внутреннего хранилища сервиса» может появляться, если в архиве с игрой есть S3 ссылки. Чтобы загрузить архив в черновик, необходимо их исключить. Пишем в пункте 1.7 Требований: clck.ru/3D4fMB.
Здравствуйте! Если я не гражданин и даже не резидент РФ, нахожусь в одной из стран СНГ и являюсь гражданином этой же самой страны СНГ, могу ли я зарабатывать на Яндекс играх? Есть ли возможность выводить деньги с РСЯ в страны СНГ, скажем, путём денежных переводов типа "Золотая Корона"?
Добрый день. На нашей платформе могут публиковать свои игры резиденты не только РФ, но и других стран. Отметим, что выплата в этом случае доступна только на счёт в банке. Подробнее в Справке РСЯ: clck.ru/3D4cAd.
Здравствуйте. Желаем удачи на выбранном пути 🙂 Будем рады помочь, если у вас появятся вопросы. Для этого просто напишите нам в личные сообщения - t.me/YandexGamesSupport.
Здравствуйте. Монетизировать проекты через РСЯ могут пользователи с 18 лет. При регистрации необходимо указать личные данные. Персональная информация в анкете и платёжные реквизиты должны принадлежать одному человеку. Важно, чтобы они были достоверными. Подробнее в пункте 3.1.2. Оферты: clck.ru/3CzTat
Добрый день. Сейчас добавить в проект на Яндекс Играх RTB-блоки не получится. Вместо них на нашей платформе используются sticky-баннеры. Это более оптимизированный формат рекламы, который легко настроить. Пишем в Справке: clck.ru/3CzSaa Отметим, что способы подключения рекламы для Яндекс Игр актуальны только для нашей платформы. Монетизацию в мобильных приложениях на iOS или Android можно настроить с помощью Yandex Mobile Ads SDK. Подробнее по ссылке: clck.ru/3CzRkC