Прежде всего, я знаю, что есть много вопросов, связанных с этим, но ни один из них, похоже, не помог мне в конкретной ситуации.В частности, Lua и Python не соответствуют моим потребностям, как я мог надеяться.Возможно, не существует языка с моими требованиями, но прежде чем прийти к такому выводу, было бы неплохо услышать еще несколько мнений.:)
Как вы уже догадались, мне нужен такой язык для игрового движка, который я пытаюсь создать.Цель этого игрового движка состоит в том, чтобы предоставить пользователю основные инструменты для создания игры, в то же время предоставляя ему свободу создания множества различных типов игр.
По этой причине язык сценариев должен иметь возможностьобрабатывать игровые концепции интуитивно.Помимо прочего, должно быть легко определить множество типов, подтипить их с немного отличающимися свойствами, динамически запрашивать и изменять объекты и так далее.
Кроме того, разработчик игры должен иметь возможность обрабатывать все ситуации, с которыми они сталкиваются, на языке сценариев.В то время как базовые компоненты, такие как рендерер и сетевое взаимодействие, будут реализованы в C ++, специфичные для игры механизмы, такие как вращение нескольких сотен объектов вокруг планеты, будут обрабатываться на языке сценариев.Это означает, что язык сценариев должен быть безумно быстрым, скорость 1/10 С, вероятно, минимальная.
Тогда возникает проблема отладки.Информация о функции, трассировке стека и состояниях переменных, в которых произошла ошибка, должна быть доступна.
Последнее, но не менее важное, это проект, выполняемый одним человеком.Даже если бы я захотел, у меня просто нет ресурсов, чтобы тратить недели только на клейкий код.Интеграция языка с моим проектом не должна быть намного сложнее, чем интеграция lua.
Изучая два предложенных языка, lua и python, lua быстро (luajit) и его легко интегрировать, но его стандартные средства отладки кажутсябыть не хватает.Что еще хуже, у lua по умолчанию вообще нет системы типов.Конечно, вы можете реализовать это самостоятельно, но синтаксис всегда будет странным и неинтуитивным.
С другой стороны, Python очень удобен в использовании и имеет базовую систему классов.Тем не менее, это не так просто интегрировать, это парадигма, на самом деле не включающая проверку типов, и она определенно не достаточно быстра для более сложных игр.Я еще раз хотел бы отметить, что все будет сделано в Python.Я хорошо знаю, что python, вероятно, будет достаточно быстрым для 90% кода.
Есть также Scala, которую я до сих пор не предлагал.Кажется, что Scala на самом деле удовлетворяет большинству требований, но встраивание Java VM в C кажется не очень простым, и обычно кажется, что java ожидает, что вы создадите свое приложение на основе java, а не наоборот.Я также не уверен, что функциональная парадигма Scala подойдет для интуитивно понятной разработки игр.
РЕДАКТИРОВАТЬ: Обратите внимание, что этот вопрос не о поиске решения любой ценой.Если нет лучшего языка, чем lua, я просто скомпрометирую и использую его (у меня уже есть вещь, связанная с моей программой).Я просто хочу убедиться, что я не пропускаю что-то, что было бы более подходящим, прежде чем сделать это, поскольку Луа далека от идеального решения для меня.