2010-10-28 4 views
3

Я разрабатываю простые игры как хобби. Для моего нового проекта я хочу, чтобы некоторые части были доступны для сценариев. Я знаком с python, но не против изучения новых языков. Возникает вопрос:Использование C++ и скриптов вместе

Я планирую внедрить обнаружение путей, поле обзора, обнаружение столкновения и т. Д. На C++, но вы хотите использовать сценарии для авторизованных состояний AI, сценариев событий. Какая структура используется для такого рода работ? Я предполагаю, что могу сделать программу на C++ запускать процесс python, который, в свою очередь, вызывает методы C++, но он кажется неэффективным. Другая идея - создать библиотеку, которая будет вызываться из python, что тоже не очень привлекательно. Каков обычный способ сделать это (за исключением написания собственного языка и парсера?) Я слышал, что lua популярен для встраивания в C-программы.

ответ

6

Из моего личного опыта, как lua и tcl имеют фантастический API, C для встраивания. Оба языка очень просты. Если вы пишете командный интерфейс, я бы сказал, что поговорим с tcl, но если вы просто используете встроенный интерпретатор, я бы порекомендовал lua. Учитывая, что вы используете C++, вы также можете посмотреть в API luabind, я слышал о нем хорошие вещи.

Для искусственного интеллекта или других состояний в государственном машиностроении this blog post от Zed Shaw хорошо читается. Кодовый код AI может выглядеть намного лучше для сложных скриптов, а не для управления огромной кучей состояний и их переходов.

Если вы используете python, вам может быть лучше extending rather than embedding.

+1

+1 для продления vs embed link и lua props –

3

Из личного опыта я могу настоятельно рекомендовать Javascript-движок Google V8. Он очень эффективен, написан на C++, тривиально легко встраивается, не имеет других зависимостей и действительно красивого родного интерфейса.

http://code.google.com/p/v8/

2

Я согласен с тем, что Tcl и Lua являются одними из самых простых для встраивания в приложение c/C++. В основном потому, что это было дизайнерское решение с самого начала. Другой язык, который был предназначен для внедрения, - Guile.

Если вы заинтересованы в внедрении языка сценариев в приложение на языке C++, посмотрите на Swig. Swig может автоматически создавать код клея для нескольких языков сценариев, включая питон, который вы уже знаете. Главное преимущество заключается в том, что он обрабатывает много разных языков сценариев.

+0

Guile счета как язык внедрения, но никогда не казалось, что это было подходящее место для него, по сравнению с тем, насколько хороши API-интерфейсы lua или tcl. Похоже, что он превратился в язык сценариев общего назначения больше, чем язык встраивания. Имейте +1, особенно для упоминания swig. –

+0

@Jack Kelley Я согласен :) Разработчики Guile, как правило, не оптимизируют реализацию языка в интересах простоты встраивания. Но я не уверен, сколько добавленной стоимости. – srean

Смежные вопросы