Подключение C++ в Godot 4 | GDExtension

Sdílet
Vložit
  • čas přidán 13. 07. 2024
  • Документация по GDExtension С++ example - docs.godotengine.org/ru/4.x/t...
    Мой вк - salford_yt
    0:00 Вступление
    1:40 Открываем GDExtension C++ example
    2:00 Про godot-cpp
    2:09 Создаём gdextension_cpp_example и инициализируем git
    2:38 Клонируем репозиторий godot-cpp с git hub'а
    3:31 Создание C++ сборки
    4:12 Создание простого плагина
    5:13 gdexapmle.h
    5:26 gdexapmle.cpp
    5:56 register_types.cpp
    6:29 register_types.h
    6:42 Godot'овский проект
    7:37 SConstruct
    7:56 Комплируем код
    8:35 Проверка структуры файлов
    9:19 gdexample.gdextension
    10:00 Запускам созданный плагин
    11:00 Итог

Komentáře • 49

  • @defolt7
    @defolt7 Před 7 měsíci +4

    Человек заслуживает Оскара, спасибо, интернет будет о тебе помнить

  • @flaituti
    @flaituti Před 6 měsíci +3

    Спасибо тебе, получилось подключить С++, даже изменения в скрипте работают. От всей души благодарю

  • @dameroglaz6933
    @dameroglaz6933 Před 8 měsíci +1

    Спасибо за видео!

  • @juggdeuce18
    @juggdeuce18 Před 7 měsíci +1

    Спасибо тебе за помощь

  • @_scorlenty_12
    @_scorlenty_12 Před 3 měsíci

    спасибо огромноеее!!!

  • @alexmo6538
    @alexmo6538 Před měsícem +1

    Спасибо парниршка! Годот наше все!

  • @TheDwcorp
    @TheDwcorp Před 6 měsíci +1

    Хм, а можно ли при сборке самой библиотеки (итоговой) не использовать Scons? В старой версии движка (где еще был GDNative) это было возможно, получившийся после сборки биндингов годота .lib можно было спокойно прилинковать к своей библиотеке и собрать её хоть в Visual Studio хоть где-то еще, юзая CMake например. В случае с 4-ой версией почему-то такого сделать не удается (пытаюсь собрать на CMake/MinGW, но и в случае с CMake/MSVC аналогично). Ошибки линковки. Может знаете в чем дело? Кто-нибудь пробовал?

    • @TheDwcorp
      @TheDwcorp Před 6 měsíci +1

      Все дело оказалось в статической линковке с рантаймом. И да, по умолчанию scons юзает именно MSVC при сборке .lib файлов (не в курсе, можно ли переключить MinGW/GCC). Поэтому при сборке вашей библиотеки надо чтобы она тоже линковалась с рантаймом статически (и собиралась также MSVC компилятором) - в CMake это будет опция MSVC_RUNTIME_LIBRARY - "MultiThreaded"

  • @raptor7125
    @raptor7125 Před 7 měsíci +1

    То есть при каждом изменении какого либо скрипта, нужно полностью пересобирать проект с помощью scons'a?

    • @user-ek7yz4hj9w
      @user-ek7yz4hj9w  Před 7 měsíci

      Да, такова учесть проги на плюсах

  • @1FireKnight1
    @1FireKnight1 Před 3 měsíci

    Когда продолжение?

  • @defolt7
    @defolt7 Před 7 měsíci +1

    почему "scons" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.

  • @tbou_ho4hou_koiiimap676
    @tbou_ho4hou_koiiimap676 Před 4 měsíci +3

    Решение проблемы:
    > "scons" не является внутренней или внешней командой, исполняемой программой или пакетным файлом
    Установите питон и потом в cmd просто вставьте pip install scons
    Усе

    • @user-gc8ch4xs1r
      @user-gc8ch4xs1r Před 2 dny

      бро можешь помочь пж что это за ошибка:
      C:\Users\hsama\Documents\gdextension_cpp_example\godot-cpp>scons
      scons: Reading SConscript files ...
      NameError: name 'BoolVariable' is not defined:
      File "C:\Users\hsama\Documents\gdextension_cpp_example\godot-cpp\SConstruct", line 36:
      cpp_tool.options(opts, env)
      File "C:\Users\hsama\Documents\gdextension_cpp_example\godot-cpp\tools\godotcpp.py", line 325:
      tool.options(opts)
      File "C:\Users\hsama\Documents\gdextension_cpp_example\godot-cpp\tools\ios.py", line 24:
      opts.Add(BoolVariable("ios_simulator", "Target iOS Simulator", False))

  • @1FireKnight1
    @1FireKnight1 Před 3 měsíci

    КОГДА ГАЙД

  • @Naze4ik
    @Naze4ik Před 6 měsíci +1

    Круто конечно но скажу одно, то что я сначала тоже хотел внедрить c++ в godot чтобы кодить на нем, но потом понял что намного легче изучать gdscript

    • @user-ek7yz4hj9w
      @user-ek7yz4hj9w  Před 6 měsíci +2

      Он тебе не даст таких скоростей, как на плюсах

    • @Naze4ik
      @Naze4ik Před 6 měsíci

      @@user-ek7yz4hj9w типо когда большие работы? Если ты не про это то он и так быстрый

    • @Sky-pg8ot
      @Sky-pg8ot Před 3 měsíci

      ​@@user-ek7yz4hj9w он наверное хотел романтику на cpp, но оказалось что и гд подойдёт для простенькой гиперказуалки

    • @user-fv8ey8ev2p
      @user-fv8ey8ev2p Před 14 dny

      @@user-ek7yz4hj9w Скорей всего какого уровня игру бы он не разрабатывал, ему в жизни не придётся о том что GDscript медленный. Если игра тормозит, дело вероятнее всего не в языке, а в коде. Если хочется не просто играться с технологиями, а создать игру стоит выбрать gdscript или c# на котором можно писать достаточно быстро и сам он быстр (если ты беспокоишься об этом) , к тому же если ты до этого писал на c#, этот опыт пригодится в разработке игры и наоборот опыт разработки игры на c# может пригодится где-либо ещё.
      Я могу понять использование c++ в godot, но не как языка сценария для всей игры, в этом просто нет нужны, а для использования каких нибудь библиотек нужных тебе (на c++ много классных библиотек ) или если тебе прям ну очень нужен быстрый код (для участка кода являющийся бутылочным горлышком, который необходимо обрабатывать каждый кадр, если же не каждым хватит и умелого использования асинхорнности и многопоточности).

  • @MokArtiy
    @MokArtiy Před 6 měsíci +1

    А продолжение будет?

  • @_scorlenty_12
    @_scorlenty_12 Před 8 měsíci +1

    у меня пишет что git не является внутренней или внешней командой

    • @user-ek7yz4hj9w
      @user-ek7yz4hj9w  Před 8 měsíci

      Значит надо установить гит на пк)

    • @_scorlenty_12
      @_scorlenty_12 Před 7 měsíci

      аа, хорошо
      @@user-ek7yz4hj9w

    • @_scorlenty_12
      @_scorlenty_12 Před 7 měsíci

      @@user-ek7yz4hj9w а если scons Не работает

    • @user-ek7yz4hj9w
      @user-ek7yz4hj9w  Před 7 měsíci

      @@_scorlenty_12 Значит нужно его установить) А лучше посмотреть моё предыдущие видео

  • @Teritsmexa
    @Teritsmexa Před 8 měsíci +1

    у меня выдает ошибку когда пишу scons, пишу эту команду в файле godot-cpp
    "scons" не является внутренней или внешней командой, исполняемой программой или пакетным файлом

    • @user-ek7yz4hj9w
      @user-ek7yz4hj9w  Před 8 měsíci

      Значит надо посмотреть моё предыдущие видео про scons и его установить)

  • @ProstoLen
    @ProstoLen Před 8 měsíci +1

    Я вообще не понимаю как scons в этом случае нормально отрабатывает. Делаю всё также, вечно чего - то не хватает.

    • @ProstoLen
      @ProstoLen Před 8 měsíci

      scons: *** [godot-cpp\src\godot.windows.template_debug.x86_64.o] Не удается найти указанный файл

    • @user-ek7yz4hj9w
      @user-ek7yz4hj9w  Před 7 měsíci

      @@ProstoLenТы по-моему неверно команду указываешь

    • @ProstoLen
      @ProstoLen Před 7 měsíci

      @@user-ek7yz4hj9w я разобрался, но забыл что надо было поменять)

  • @user-savvafa
    @user-savvafa Před 8 měsíci +1

    Чел, в каком месте gdscript проприетарный?

    • @user-ek7yz4hj9w
      @user-ek7yz4hj9w  Před 8 měsíci

      Я под этим понимал, что типа он именно в godot используется и к нему привязан

  • @user-gc8ch4xs1r
    @user-gc8ch4xs1r Před 2 dny

    у меня вышла ошибка:
    C:\Users\hsama\Documents\gdextension_cpp_example\godot-cpp>scons
    scons: Reading SConscript files ...
    NameError: name 'BoolVariable' is not defined:
    File "C:\Users\hsama\Documents\gdextension_cpp_example\godot-cpp\SConstruct", line 36:
    cpp_tool.options(opts, env)
    File "C:\Users\hsama\Documents\gdextension_cpp_example\godot-cpp\tools\godotcpp.py", line 325:
    tool.options(opts)
    File "C:\Users\hsama\Documents\gdextension_cpp_example\godot-cpp\tools\ios.py", line 24:
    opts.Add(BoolVariable("ios_simulator", "Target iOS Simulator", False))

  • @williamgodwin5582
    @williamgodwin5582 Před 8 měsíci +1

    чёйто он проприетарный? О_О

    • @user-ek7yz4hj9w
      @user-ek7yz4hj9w  Před 8 měsíci

      Кто?)

    • @williamgodwin5582
      @williamgodwin5582 Před 8 měsíci

      @@user-ek7yz4hj9w GDscript. Оговорочка))

    • @defolt7
      @defolt7 Před 7 měsíci

      ну бывает, а что это значит?

    • @williamgodwin5582
      @williamgodwin5582 Před 7 měsíci

      @@defolt7 что ПО закрытое и\или пренадлежит кому-то. Авторское право и все такое.

  • @monkeyhead23
    @monkeyhead23 Před 5 měsíci

    нахрена, а главное зачем? я понимаю что на плюсах код будет работать быстрее, но оно того не стоит.

    • @litarinn
      @litarinn Před 4 měsíci

      на плюсах возможностей больше
      наследование больше развито как минимум

  • @Medmaph
    @Medmaph Před 4 měsíci +1

    "git" не является внутренней или внешней
    командой, исполняемой программой или пакетным файлом.
    А что собственно делать?

  • @killkostll2455
    @killkostll2455 Před 28 dny

    после scons пишет
    g++: warning: /std:c++14: linker input file unused because linking not done
    g++: error: ry
    g++: warning: not done
    g++:scons: *** [src\core\Array.windows.debug.64.o] Error 1
    g++: warning: /std:c++14: linker input file unused because linking not done
    g++: error: /std:c++14: linker input file not found: No such file or directory
    g++: warning: /Z7: linker input file unused because linking not done
    g++: error: /Z7: linker input file not found: No such file or directory
    g++: warning: /Od: linker input file unused because linking not done
    g++: error: /Od: linker input file not found: No such file or directory
    g++: warning: /EHsc: linker input file unused because linking not done
    g++: error: /EHsc: linker input file not found: No such file or directory
    g++: warning: /D_DEBUG: linker input file unused because linking not done
    g++: error: /D_DEBUG: linker input file not found: No such file or directory
    g++: warning: /MDd: linker input file unused because linking not done
    g++: error: /MDd: linker input file not found: No such file or directory
    scons: *** [src\core\AABB.windows.debug.64.o] Error 1
    g++: warning: /std:c++14: linker input file unused because linking not done
    g++: error: /std:c++14: linker input file not found: No such file or directory
    g++: warning: /Z7: linker input file unused because linking not done
    g++: error: /Z7: linker input file not found: No such file or directory
    g++: warning: /Od: linker input file unused because linking not done
    g++: error: /Od: linker input file not found: No such file or directory
    g++: warning: /EHsc: linker input file unused because linking not done
    g++: error: /EHsc: linker input file not found: No such file or directory
    g++: warning: /D_DEBUG: linker input file unused because linking not done
    g++: error: /D_DEBUG: linker input file not found: No such file or directory
    g++: warning: /MDd: linker input file unused because linking not done
    g++: error: /MDd: linker input file not found: No such file or directory
    scons: *** [src\core\Basis.windows.debug.64.o] Error 1
    g++: warning: /std:c++14: linker input file unused because linking not done
    g++: error: /std:c++14: linker input file not found: No such file or directory
    g++: warning: /Z7: linker input file unused because linking not done
    g++: error: /Z7: linker input file not found: No such file or directory
    g++: warning: /Od: linker input file unused because linking not done
    g++: error: /Od: linker input file not found: No such file or directory
    g++: warning: /EHsc: linker input file unused because linking not done
    g++: error: /EHsc: linker input file not found: No such file or directory
    g++: warning: /D_DEBUG: linker input file unused because linking not done
    g++: error: /D_DEBUG: linker input file not found: No such file or directory
    g++: warning: /MDd: linker input file unused because linking not done
    g++: error: /MDd: linker input file not found: No such file or directory
    scons: *** [src\core\CameraMatrix.windows.debug.64.o] Error 1
    scons: building terminated because of errors.