Я хотел бы добавить возможности сценариев в свой движок игры на C++.Racket как язык сценариев в игровом движке
У меня есть Engine.exe
, Physics.dll
, Audio.dll
и я добавляю Scripting.dll
, который ракетка обертки высокого уровня.
Engine.exe
загружает Physics.dll
и устанавливает физический мир, загружает Audio.dll
и устанавливает звуковой мир. Предполагается загрузить Scripting.dll
, настроить привязки на Physics.dll
, Audio.dll
и загрузить игровые скрипты.
AFAIK есть два возможных способа встроить ракетки в программу C++:
Использование Foreign Interface кажется странным из-за необходимости загружать Physics.dll
, Audio.dll
два раза: сначала от Engine.exe
, а затем от сценария игры.
Письмо Extensions выглядит более привлекательным, поскольку позволяет выполнять привязки скриптов на стороне C++. С другой стороны, вам нужно построить расширение с помощью raco ctool
, связать его с объектным файлом mzdyn
- что тоже выглядит неудобно: почему бы не сделать mzdyn
статической библиотекой?
Я хотел бы реализовать один метод, например. setupScriptBindings()
, как в Physics.dll
, так и в Audio.dll
, и называть его от Engine.exe
при запуске.
Есть ли простой способ сделать это?
Хм, возможно, это [это] (http://docs.racket-lang.org/inside/embedding.html) описание помогает. –
Hm ... ссылки, которые вы предоставляете, говорят о вложении C/другого кода ** в ** программу Racket. Из вашего описания, я думаю, вы хотите, чтобы это было наоборот, например. встраивание Racket в ваше приложение на C++: http://docs.racket-lang.org/inside/embedding.html Хотя самым простым и, вероятно, самым чистым решением было бы определить какой-то протокол для управления вашими игровыми объектами, а затем запустить ракетку как новый процесс, сообщающий использование сокетов или другого механизма IPC. –
Оффтоп: Ракетка была успешно использована в производстве видеоигр Naughty Dog. См. [«Ракетка на Playstation 3»] (http://www.youtube.com/watch?v=oSmqbnhHp1c) и [«Разработка сценариев на основе состояния в Uncharted 2: Among Thieves»] (http: //www.gameenginebook .com/ресурсы/gdc09-statescripting-uncharted2.pdf). –