Я внедряю Python в свою игру. Сценарии будут использоваться для определения символа AI, как субъекты реагируют на игровые события, и т. Д. — это означает, что в игре будет скрипт для каждого типа сущности.Эффективное вызов функции Python
Каждый скрипт будет иметь такую функцию, как createEntity()
или что-то, что вернет построенный объект. Что было бы эффективным (ish) способом вызова этих функций (помните, что в скрипте каждого объекта есть один).
Моя первоначальная мысль заключалась в том, чтобы сделать что-то вроде того, что вы видите ниже, однако я не уверен, насколько это эффективно. Например, что происходит с импортированным модулем героя после запуска этой строки? Остается ли он загружен в основной модуль? Если это так, это проблематично, так как я собираюсь импортировать множество скриптов для всех объектов, которые мне могут понадобиться добавить в игровой мир.
boost::python::handle<> result(
PyRun_String("import hero\n" "createEntity()\n",
Py_file_input, main_namespace.ptr(), main_namespace.ptr())
);
// Then extract the entity from `result`...
Какие у вас есть предложения?
Без дополнительной информации я предлагаю вам сделать это в обратном порядке. Если вы хотите определить поведение в Python, тогда напишите приложение в Python, вызывающем на C++ для машинных зависимых, быстрых действий. Внедрение Python в том виде, в котором вы предлагаете играть с ошибками обоих языков, обращая его в свои сильные стороны. – msw
@msw До сих пор я предполагал, что конечный результат должен быть исполняемым (написанным на C++), который вызывает функции, определенные в Python всякий раз, когда это необходимо. Неправильно ли мое изображение? –
см. Мой ответ ниже – msw