Задать вопрос
  • Как передать какие-либо данные в godot через браузер?

    Axelaredz
    @Axelaredz
    Для передачи данных из браузера в игру, созданную на Godot, можно использовать JavaScript-мост, который позволяет взаимодействовать между кодом Godot и кодом JavaScript. Godot предоставляет специальный интерфейс для этого через глобальную переменную `EMSCRIPTEN` (для HTML5 экспорта).
    
    Вот пошаговое руководство о том, как передавать данные из браузера в Godot:
    
    ---
    
    ### 1. **Подготовка Godot**
    В вашем Godot-проекте создайте функцию, которая будет принимать данные от JavaScript. Для этого используйте метод `export()` или просто определите функцию в скрипте.
    
    Пример Godot-скрипта:
    ```gdscript
    extends Node
    
    func _ready():
        # Инициализация игры
    
    # Функция для получения данных из JavaScript
    func receive_data(data: String):
        print("Получены данные из JavaScript:", data)
    ```
    
    Эта функция будет вызываться из JavaScript, чтобы передать данные в Godot.
    
    ---
    
    ### 2. **Настройка JavaScript-моста**
    При экспорте проекта для HTML5, Godot создаёт глобальную переменную `Module`, которая позволяет взаимодействовать с игрой через JavaScript. Вы можете вызывать функции Godot напрямую через эту переменную.
    
    Пример JavaScript-кода для передачи данных в Godot:
    ```javascript
    // Получаем доступ к модулю Godot
    var Module = {
        preRun: [],
        postRun: [],
        print: (text) => console.log(text),
        printErr: (text) => console.error(text),
        canvas: document.getElementById('game-container') // Укажите ID контейнера игры
    };
    
    // Функция для отправки данных в Godot
    function sendDataToGodot(data) {
        if (typeof Module !== 'undefined' && typeof Module.call != 'undefined') {
            // Вызываем функцию Godot через call()
            Module.call('receive_data', [data]);
        } else {
            console.error('Модуль Godot не загружен!');
        }
    }
    
    // Пример использования
    sendDataToGodot("Hello from JavaScript!");
    ```
    
    Здесь:
    - `Module.call('receive_data', [data])` — вызывает функцию `receive_data` в Godot и передаёт ей аргументы.
    - `data` — это строка, которую вы хотите передать в Godot.
    
    ---
    
    ### 3. **Обработка данных в Godot**
    В Godot функция `receive_data` будет автоматически вызвана с переданными данными. Вы можете обрабатывать их так, как вам нужно.
    
    Пример:
    ```gdscript
    func receive_data(data: String):
        print("Получено сообщение:", data)
        # Здесь можно выполнить любые действия с полученными данными
    ```
    
    ---
    
    ### 4. **Передача данных из Godot в JavaScript**
    Если вам также нужно передавать данные из Godot в JavaScript, вы можете использовать функцию `JavaScript.eval()`. Например:
    
    Пример Godot-скрипта:
    ```gdscript
    func send_data_to_js(data: String):
        var js_code = "window.receiveDataFromGodot('" + data + "');"
        JavaScript.eval(js_code)
    ```
    
    Затем в JavaScript определите функцию `receiveDataFromGodot`:
    ```javascript
    function receiveDataFromGodot(data) {
        console.log("Получено сообщение из Godot:", data);
    }
    ```
    
    ---
    
    ### 5. **Тестирование**
    Чтобы протестировать взаимодействие:
    1. Экспортируйте свой проект для HTML5.
    2. Разместите все файлы (HTML, JS, WASM) на сервере.
    3. Откройте страницу в браузере и проверьте консоль (`F12`) на наличие вывода данных.
    
    ---
    
    ### Важные замечания
    - **Типы данных**: При передаче данных между Godot и JavaScript следует помнить, что Godot поддерживает только базовые типы данных (например, строки, числа). Если вам нужно передавать сложные структуры, используйте JSON.
    - **Асинхронность**: Если данные передаются асинхронно, убедитесь, что они обрабатываются корректно в обоих направлениях.
    - **Безопасность**: Если данные приходят из внешних источников, обязательно проверяйте их на валидность, чтобы избежать уязвимостей.
    
    ---
    
    Теперь вы можете свободно обмениваться данными между Godot и JavaScript!
    Ответ написан
    Комментировать
  • Как вшить игру на godot в существующий сайт?

    Axelaredz
    @Axelaredz
    Встраивание игры, созданной на Godot Engine, в существующий сайт — это довольно распространённая задача. Для этого вам нужно экспортировать вашу игру как веб-приложение и затем правильно внедрить её в HTML-код вашего сайта. Вот пошаговое руководство:
    
    ---
    
    ### 1. **Экспорт игры для веба**
    Godot позволяет экспортировать проекты в формате `.html` и `.js`, которые можно использовать для запуска игры через браузер.
    
    #### Шаги:
    1. Откройте свой проект в Godot.
    2. В верхнем меню выберите **"Export"**.
    3. В открывшемся окне нажмите кнопку **"Add..."** и выберите платформу **"HTML5"**.
    4. Убедитесь, что все необходимые ресурсы (например, аудио, текстуры) добавлены в экспорт.
    5. Настройте параметры экспорта (если нужно):
       - `Window > Size`: задайте размер игрового окна.
       - `Display > Stretch`: настройте масштабирование игры.
    6. Нажмите **"Export Project"** и сохраните файл с расширением `.html`.
    
    В результате вы получите несколько файлов:
    - Основной HTML-файл (например, `index.html`).
    - JavaScript-файл (например, `game.js`).
    - Бинарный файл с игрой (например, `game.wasm`).
    
    ---
    
    ### 2. **Подготовка файлов**
    Убедитесь, что все файлы (HTML, JS, WASM и дополнительные ресурсы, если они есть) находятся в одной папке. Это важно, так как эти файлы зависят друг от друга.
    
    ---
    
    ### 3. **Встраивание в сайт**
    Теперь нужно встроить игру в существующую страницу вашего сайта. Есть два основных способа сделать это:
    
    #### **Способ 1: Прямое использование HTML-файла**
    Если у вас есть возможность разместить все файлы игры на сервере, вы можете просто подключить HTML-файл напрямую.
    
    Пример:
    ```html
    <iframe 
        src="path/to/your-game/index.html" 
        width="800" 
        height="600" 
        frameborder="0">
    </iframe>
    ```
    
    Здесь:
    - `src` указывает путь к вашему HTML-файлу.
    - `width` и `height` определяют размер области, где будет отображаться игра.
    
    ---
    
    #### **Способ 2: Добавление кода игры напрямую**
    Если вы хотите интегрировать игру более тесно с сайтом, вы можете скопировать содержимое HTML-файла игры и вставить его в нужное место вашего сайта.
    
    Пример:
    ```html
    <div id="game-container"></div>
    
    <script src="path/to/your-game/game.js"></script>
    <script>
        var Module = {
            canvas: document.getElementById('game-container')
        };
    </script>
    ```
    
    Здесь:
    - `<div id="game-container"></div>` — контейнер, в котором будет отображаться игра.
    - `game.js` — главный JavaScript-файл вашей игры.
    - Переменная `Module.canvas` указывает Godot, куда нужно рендерить игру.
    
    ---
    
    ### 4. **Размещение файлов на сервере**
    Чтобы игра работала корректно, все файлы (HTML, JS, WASM и ресурсы) должны быть доступны по URL. Вы можете:
    - Разместить их на том же сервере, где находится ваш сайт.
    - Использовать CDN (например, GitHub Pages, Netlify или AWS S3) для хранения статических файлов.
    
    Убедитесь, что сервер настроен для правильной обработки файлов `.wasm`. Если сервер не поддерживает WebAssembly, добавьте следующие заголовки:
    ```plaintext
    Content-Type: application/wasm
    ```
    
    ---
    
    ### 5. **Тестирование**
    После размещения файлов протестируйте игру в разных браузерах, чтобы убедиться, что она работает корректно. Обратите внимание:
    - Размеры игры должны соответствовать вашему дизайну.
    - Все ресурсы (текстуры, звуки) должны загружаться без ошибок.
    
    ---
    
    ### 6. **Оптимизация**
    Если игра большая, рассмотрите следующие варианты оптимизации:
    - Сжатие файлов с помощью Gzip или Brotli.
    - Разбиение ресурсов на части для поэтапной загрузки.
    - Использование lazy loading для больших активов.
    
    ---
    
    ### Заключение
    Вот и всё! Теперь ваша игра на Godot должна успешно работать на сайте. Если возникнут проблемы, проверьте консоль браузера (`F12`) на наличие ошибок и убедитесь, что все файлы корректно загружаются с сервера.
    Ответ написан
    Комментировать
  • Какие актуальны смартфоны на Linux сейчас 2024 году?

    Axelaredz
    @Axelaredz
    Ждём эРФон

    Хотя вот этот тоже интересный
    https://youtu.be/5tNRgenhvIQ

    https://shop.fairphone.com/nl/fairphone-5
    Ответ написан
    Комментировать
  • Есть ли в Godot engine вставка рекламы?

    Axelaredz
    @Axelaredz
    https://gamepush.com/ru/
    и ещё забыл как называется возможно https://ishodnik.com/mirrasdk/
    Ответ написан
    Комментировать
  • Технологический потолок в Godot, есть ли? И насколько он высок? Каким видите его будущее?

    Axelaredz
    @Axelaredz
    С тех пор вроде немного времени прошло, но заметных игр на Godot прибавилось)

    https://store.steampowered.com/app/1963610/Road_to...

    https://colors.sonicthehedgehog.com

    и другие 100500+
    Ответ написан
    Комментировать
  • Расширение для Firefox, чтобы при клике на активную вкладку страница скроллилась вверх?

    Axelaredz
    @Axelaredz
    Это да
    пока что такой вариант только
    https://addons.mozilla.org/firefox/addon/scroll-to...

    и кнопка Home

    Зато теперь Firefox по скорости снова нагибает все остальные браузеры на движке хрома, что не может не радовать) Потому причин его заюзать больше
    Ответ написан
    Комментировать
  • Ортогональная камера обрезает ландшафт, как пофиксить?

    Axelaredz
    @Axelaredz
    Cкорей всего также, как и в Блендер
    Пойти читать https://docs.godotengine.org/ru/4.x/tutorials/3d/3...
    Ответ написан
    Комментировать
  • Как с помощью ffmpeg убавить громкость видео и наложить поверх другой звук?

    Axelaredz
    @Axelaredz Автор вопроса
    ffmpeg -i video.mp4 -i audio.mp3 -filter_complex "[0:a]volume=0.2[a1];[1:a]volume=1[a2];[a1][a2]amerge=inputs=2[a]" -map 0:v -map [a] -c:v copy -c:a aac -b:a 128k output.mp4

    Где [0:a]volume=0.2[a1] убавит громкость у видео до 20% от 100%
    а [1:a]volume=1[a2] оставит 100% у добавленного аудио

    Ещё конвертирует аудио в AAC c 128 битрейтом
    Ответ написан
    Комментировать
  • Почему ubuntu тормозит после нескольких часов работы?

    Axelaredz
    @Axelaredz
    Переходи на Kubuntu, Gnome уже не торт давно. Хавает оперативы больше, а возможностей меньше, чем в KDE.
    Ответ написан
    4 комментария