2013-10-06 5 views
0

Итак, у меня с другом был аргумент, который мы не смогли решить. Он пишет универсальную библиотеку веб-игр и редактор карт. Редактор карт сохраняет карты как XML, но редактор карт также может загружать сценарий Lua, который экспортирует детали карты в файл Javascript, который выглядит примерно так (он не хотел публиковать код, так что это просто фрагмент кода с именами измененных):Генерация кода и формат файла

// This probably isn't valid code, but this is the idea of the code generator 
(function() { 
Game.Level1 = function (state) { 
    GameEngine.Group.call(this); 
      var Object0 = new Game.Lo(new GameEngine.Point(654 , 975.13), 15, state); 
      var slot123 = new GameEngine.TimeSlot(123);  //Start 
      slot123.addEvent(new GameEngine.Event(Object0, "x", "current", 15, 200)); 
... 

идея заключается в том, что библиотека игра будет просто запустить этот код, вместо того, чтобы разобрать файл карты и создания объектов на лету. И сценарий Lua в редакторе карт, который генерирует код, может быть изменен любым, кто хочет вывести код на другом языке для другой библиотеки. (не ограничиваясь языками сценариев).

Я никогда не слышал об этой идее, обычно я ожидал, что данные карты будут в стандартном формате, таком как JSON или XML, и проанализируйте библиотеку игр.

Итак, учитывая, что его библиотека написана на javascript, и его карта может генерировать javascript для загрузки файлов, каковы компромиссы между запуском сгенерированного кода и разбором JSON/XML и генерированием объектов из этого?

+1

Здесь есть много вопросов. Это не очень хорошо соответствует формату Q & A, для которого предназначен SO. Разделите вопрос на более сосредоточенные предметы и спросите еще раз. См. [Help/on-topic] –

+0

@MikeW Отредактировано для вопросов, которые мне абсолютно необходимо знать. –

+0

Действительно ли это вопрос, основанный на мнениях? Я не знал, что генерация кода была правильной тактикой для загрузки данных. –

ответ

0

В общем смысле загрузка метаданных из другого скрипта может дать дополнительную гибкость генератору сценариев о том, как данные отправляются, отображаются и т. Д. Например, вы можете иметь полные математические выражения, условные обозначения и т. Д. Как часть загруженный скрипт, который будет анализироваться и загружаться без проблем парсером сценариев (интерпретатором). Сложнее сделать то же самое, используя XML или JSON (представьте, что вы отправляете выражение для выполнения Miller Cylindrical Projection через XML, на лету).

Я видел много ситуаций, когда приложение создает собственный язык сценариев (MAXscript, MEL для Maya) для обеспечения гибкости для пользователя. Вероятно, они не похожи на использование Java-скриптом Java для загрузки метаданных. Но IMHO, это непрерывный спектр, начиная с текстовых файлов метаданных, до XML, JSON, синтаксического анализа выражений, до полноценного синтаксического анализа скриптов.

С другой стороны, отправка сложных сценариев будет означать разоблачение части вашей базы кода. Также всем известно, что делает XML, и вы можете ожидать, что не-программист будет использовать/модифицировать XML-файлы. Им это удобно. Возможно, им не комфортно читать то, что они считают «программами» или «скриптами». Я видел эту первую руку в своей компании, где художники были непростыми, изменили файл Lua. Им было удобно изменять одну и ту же информацию, если это был простой текстовый файл. Там могут быть некоторые проблемы с безопасностью, но я действительно не знаком с этим, поэтому я не могу комментировать.

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