Я хочу разработать игровой движок JavaScript, который использует C ++ в качестве бэк-энда для рендеринга / обновления / столкновения и т. Д. Практически все тяжелые вещи.
Тогда были бы классы / функции C ++, которыемогут быть изменены путем изменения переменной isolate
(или, может быть, просто нативный модуль nodejs).Некоторые из этих классов, например класс Sprite
, могут иметь свою функцию update
, переопределенную подклассом JS, чтобы позволить пользователям настраивать поведение.
Наконец, игровой движок будет работать в циклев JavaScript, но каждый фрейм будет вызывать контекст C ++ для обновления / рендеринга, и все вещи ПЛЮС будет множество вызовов для проверки ввода, столкновения и т. д. Не говоря уже о всех обратных вызовах, которые каждый подкласс будет делать дляродительские классы, написанные на C ++.
Меня беспокоит то, что я прочитал, что при вызове C ++ из контекста JS (будь то ffi или нативные модули) возникают значительные издержки (больше, чем обычно).Обычно это того стоит, но, учитывая, сколько вызовов будет выполняться между двумя языками в каждом кадре, возможно, это не лучшая идея?Вместо этого, может быть, что-то вроде Python будет более подходящим из-за его нулевых накладных расходов (хотя Python в целом намного медленнее) или из-за другого интерпретатора JS, вместе взятых?