Могу ли я использовать C в качестве языка сценариев для своего движка? - PullRequest
9 голосов
/ 24 мая 2011

У меня сейчас есть игровой движок, и я ищу для него язык сценариев.Я попробовал Lua и нашел его довольно хорошим, но я хочу, чтобы мой сценарий выглядел как C или лучше C ++ или как будто сценарий нереального движка был бы лучше.

Это вообще возможно?

Ответы [ 6 ]

6 голосов
/ 24 мая 2011

Конечно, вы можете: P Вы можете делать все, что хотите.

В настоящее время я вижу эти три способа:

  • Либо вы сами пишете код для разбора C /C ++ - код, который на самом деле не простая задача
  • Вы используете парсер, который анализирует и интерпретирует C-Code. Ch Standard edition должен сделать свое дело, поскольку он может быть включен в собственные проекты в качестве языка сценариев.
  • Другим способом было бы создание сценария, который динамически компилирует сгенерированный пользователем код вразделяемая библиотека, которая динамически загружается вашим движком.Хотя это больше не будет «сценарием».
4 голосов
/ 31 мая 2011

Проверьте AngelScript, GameMonkey и многие другие

http://codeplea.com/game-scripting-languages

Или, может быть, пойти сложным путем и интегрировать интерпретатор CINT C / C ++ (http://root.cern.ch) с библиотекой ROOT. Идея состоит в том, что вы будете интерпретировать все ваши файлы .c / .cpp, над которыми вы активно работаете в то время как остальные компилируются (на ваш выбор).

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

Кроме того, в интерпретаторе CINT есть дополнительные возможности для динамического языка - вы можете заниматься самоанализом (отражением) - что позволяет вам создавать, например, сериализаторы для упаковки ваших игровых ресурсов или чего-то еще, что вам может понадобиться.

Существует также UnderC, Ch (как уже упоминалось) и многие другие ...

2 голосов
/ 31 мая 2011

TCC имеет библиотеку, позволяющую динамическую компиляцию кода C, и, будучи довольно быстрой, как компилятор C, его можно использовать для компиляции (почти) на лету, естьдействительно простой пример здесь , однако документация TCC в заголовке намного лучше объясняет вещи.

он также поставляется с собственным лучшим примером , показывающим, как предоставлять символы компилятору при использовании libtcc, это может позволить вам изолировать ваши скрипты, если вы отключите определенные части компилятора(в основном импорт внешних библиотек, отличных от тех, что находятся в безопасном списке), что возможно в виде полностью открытого исходного кода, а не сложного слишком и имеет некоторые базовые документы по своей внутренней структуре.

2 голосов
/ 25 мая 2011

Существует несколько языков сценариев с более или менее похожим на С синтаксисом.Другие уже упоминали ECMAScript, другой вариант был бы s-lang , который был разработан как язык сценариев, легко встраивался и имел синтаксис, очень близкий к C.

2 голосов
/ 24 мая 2011

Metalua - это система реализации языка, основанная на кодовой базе Lua, которая предоставляет различные языковые возможности, такие как синтаксический анализатор ( gg / mlp ), позволяя вам расширить язык или полностью изменить его.синтаксис.Представьте себе нечто среднее между yacc и метациклическим интерпретатором Lispy.

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

1 голос
/ 24 мая 2011

Например, как сказал @Charles, используйте Metalua, если вы хотите что-то простое в реализации и обладаете гибкостью. Если вам нужен C-подобный язык сценариев, вы можете попробовать ECMAScript или любой из его надмножеств (JavaScript, JScript, ActionScript).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...