Фон:
Я работал над игрой платформера, записанной в C++ в течение нескольких месяцев. Игра в настоящее время пишется полностью в C++, хотя я заинтригован возможностью использования Lua для вражеского AI и возможно некоторой другой логики. Однако проект был разработан без Lua в памяти, и я уже написал рабочий код C++ для большой части AI. Я надеюсь, что Lua могут улучшить расширяемость игры, но не знают, имело ли смысл преобразовывать существующий код C++ в Lua.
Вопрос:
Когда, если когда-нибудь, действительно ли уместно взять полностью функциональный код C++ и осуществить рефакторинг его в язык сценариев как Lua?
Вопрос намеренно немного неопределенен, поэтому не стесняйтесь, дают ответы, которые не относятся к данному фону.
Языки сценариев полезны для вещей, которые могут часто меняться или расширяться, и могут позволить себе торговлю из-за скорости.
Не имеет смысла использовать язык сценариев в ваших основных библиотеках, потому что они относительно статичны (все, что они делают, это обрабатывают материал снова и снова) и должны быть быстрыми. Но для таких вещей, как AI, это идеальная идея. Вы можете настроить ИИ без перекомпиляции и довольно хорошо разрешить будущие изменения. После отправки вы можете предварительно скомпилировать язык сценариев и назвать его хорошим.
Это также лучше всего для расширяемости. Предоставьте своей игре интерфейс Lua, и любой сможет писать плагины, используя простой язык, без необходимости компиляции. Чем более детализирован ваш интерфейс Lua, тем более выразительными и мощными могут быть эти плагины.
Если у вас уже все работает, если вы не собираетесь пытаться улучшить это или разрешить расширения, я действительно не вижу причин отказываться от этого; все готово. Об этом стоит помнить при создании следующего игрового движка.
Тем не менее, если вы еще не полностью закончили, и это что-то вроде хобби / практики, я бы порекомендовал вам это сделать. Это будет ваше введение в добавление возможностей сценариев в игровой движок. Когда вы приступите к созданию более крупных и сложных двигателей, вам не нужно будет беспокоиться о чем-то новом.
Когда, если когда-либо, целесообразно взять полностью функциональный код C ++ и преобразовать его в язык сценариев, такой как Lua?
Редко. Вот когда я это сделал:
Я хотел изменить дизайн или добавить функциональность таким образом, чтобы мне все равно пришлось пересмотреть код C ++.
Я обнаружил части кода C ++, которые постоянно менял.
Я считал, что, перейдя с C ++ на Lua, я смогу уменьшить размер кода в пять или десять раз.
Первые два пункта - это то, что может сделать каждый. Третий требует некоторого опыта.