Подключение C++ в Godot 4 | GDExtension
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 Итог
Человек заслуживает Оскара, спасибо, интернет будет о тебе помнить
Спасибо тебе, получилось подключить С++, даже изменения в скрипте работают. От всей души благодарю
Спасибо за видео!
Спасибо тебе за помощь
спасибо огромноеее!!!
Спасибо парниршка! Годот наше все!
Хм, а можно ли при сборке самой библиотеки (итоговой) не использовать Scons? В старой версии движка (где еще был GDNative) это было возможно, получившийся после сборки биндингов годота .lib можно было спокойно прилинковать к своей библиотеке и собрать её хоть в Visual Studio хоть где-то еще, юзая CMake например. В случае с 4-ой версией почему-то такого сделать не удается (пытаюсь собрать на CMake/MinGW, но и в случае с CMake/MSVC аналогично). Ошибки линковки. Может знаете в чем дело? Кто-нибудь пробовал?
Все дело оказалось в статической линковке с рантаймом. И да, по умолчанию scons юзает именно MSVC при сборке .lib файлов (не в курсе, можно ли переключить MinGW/GCC). Поэтому при сборке вашей библиотеки надо чтобы она тоже линковалась с рантаймом статически (и собиралась также MSVC компилятором) - в CMake это будет опция MSVC_RUNTIME_LIBRARY - "MultiThreaded"
То есть при каждом изменении какого либо скрипта, нужно полностью пересобирать проект с помощью scons'a?
Да, такова учесть проги на плюсах
Когда продолжение?
почему "scons" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
понял
Решение проблемы:
> "scons" не является внутренней или внешней командой, исполняемой программой или пакетным файлом
Установите питон и потом в cmd просто вставьте pip install scons
Усе
бро можешь помочь пж что это за ошибка:
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))
КОГДА ГАЙД
Круто конечно но скажу одно, то что я сначала тоже хотел внедрить c++ в godot чтобы кодить на нем, но потом понял что намного легче изучать gdscript
Он тебе не даст таких скоростей, как на плюсах
@@user-ek7yz4hj9w типо когда большие работы? Если ты не про это то он и так быстрый
@@user-ek7yz4hj9w он наверное хотел романтику на cpp, но оказалось что и гд подойдёт для простенькой гиперказуалки
@@user-ek7yz4hj9w Скорей всего какого уровня игру бы он не разрабатывал, ему в жизни не придётся о том что GDscript медленный. Если игра тормозит, дело вероятнее всего не в языке, а в коде. Если хочется не просто играться с технологиями, а создать игру стоит выбрать gdscript или c# на котором можно писать достаточно быстро и сам он быстр (если ты беспокоишься об этом) , к тому же если ты до этого писал на c#, этот опыт пригодится в разработке игры и наоборот опыт разработки игры на c# может пригодится где-либо ещё.
Я могу понять использование c++ в godot, но не как языка сценария для всей игры, в этом просто нет нужны, а для использования каких нибудь библиотек нужных тебе (на c++ много классных библиотек ) или если тебе прям ну очень нужен быстрый код (для участка кода являющийся бутылочным горлышком, который необходимо обрабатывать каждый кадр, если же не каждым хватит и умелого использования асинхорнности и многопоточности).
А продолжение будет?
Надеюсь, что да)
Не будет
у меня пишет что git не является внутренней или внешней командой
Значит надо установить гит на пк)
аа, хорошо
@@user-ek7yz4hj9w
@@user-ek7yz4hj9w а если scons Не работает
@@_scorlenty_12 Значит нужно его установить) А лучше посмотреть моё предыдущие видео
у меня выдает ошибку когда пишу scons, пишу эту команду в файле godot-cpp
"scons" не является внутренней или внешней командой, исполняемой программой или пакетным файлом
Значит надо посмотреть моё предыдущие видео про scons и его установить)
Я вообще не понимаю как scons в этом случае нормально отрабатывает. Делаю всё также, вечно чего - то не хватает.
scons: *** [godot-cpp\src\godot.windows.template_debug.x86_64.o] Не удается найти указанный файл
@@ProstoLenТы по-моему неверно команду указываешь
@@user-ek7yz4hj9w я разобрался, но забыл что надо было поменять)
Чел, в каком месте gdscript проприетарный?
Я под этим понимал, что типа он именно в godot используется и к нему привязан
у меня вышла ошибка:
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))
чёйто он проприетарный? О_О
Кто?)
@@user-ek7yz4hj9w GDscript. Оговорочка))
ну бывает, а что это значит?
@@defolt7 что ПО закрытое и\или пренадлежит кому-то. Авторское право и все такое.
нахрена, а главное зачем? я понимаю что на плюсах код будет работать быстрее, но оно того не стоит.
на плюсах возможностей больше
наследование больше развито как минимум
"git" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
А что собственно делать?
Установить git)
после 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.
помоги пожалуйста