Как игровые движки понимают инородные языки?



@motkot

Всегда было интересно как игровые движки понимают инородные языки. Например много движков написано на языке C++ и во многих из них есть поддержка языков на которых сам движок не написан.

Например:
Unity написан на C++, но игры пишутся на C#
Love2D написан на C++, но игры пишутся на Lua
Cocos2D написан на Python/C++, но игры пишутся на Lua

Каким образом движок написанный на C++ понимает другие языки? Движки которые не используют инородные языки работают быстрее? Можно совместить любые языки?


Решения вопроса 2



@vabka

Интерпретатор lua (в случае Love2D и Cocos), и Mono (в случае Unity) можно подключить, как обычную сишную библиотеку.
В этом случае C++ не нужно «понимать» чужой язык, достаточно лишь понимать, какие сишные функции надо вызывать, чтобы запустить код на «чужом» языке, и как туда передать доступ к функциям движка (это делается, обычно, путём передачи указателей на функции)


Ответы на вопрос 3



@saboteur_kiev Куратор тега Разработка игр

Каким образом движок написанный на C++ понимает другие языки?

Движок — это набор функций. Он может быть создан в виде стандартных библиотек для Windows/Linux
Ну а библиотеки может использовать любая другая программа, включая другие языки программирования.
Тем более, что движки и пишут так, чтобы их было удобно использовать в вызове из другой программы.



@firedragon

если есть договоренность как передать любую фигню то ее можно передать, даже если нет то тоже получается



@AgentSmith

Есть такие штуки — трансляторы, интерпретаторы и компиляторы, которые можно писать на любом языке — хоть на C++, хоть на C# или Python.
Вот этим они и занимаются — понимают любые языки вплоть до самописных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *