Нет. По крайней мере, вероятно нет.
Это очень частый случай изобретения колеса - разработка игры, ошибка, которая все еще довольно популярна.
Если вы задаете этот вопрос, вы, скорее всего, будете зависеть от того, что делают другие, поэтому просто посмотрите, что Epic Games только что сделала с Unreal Engine:
- У UE3 была нестандартная, неоптимизированная, трудно отлаживаемая вещь UnrealScript,
- Если слух правдив, то его поддержка удаляется в UE4 в пользу горячо загружаемых библиотек C ++.
Как вы думаете, вы можете сделать лучше, чем Epic?
Создание языков программирования принадлежит создателям языков программирования , а не инженерам игр.
Для того, чтобы язык стал полностью зрелым, нужны годы и годы, и его сопутствующий набор инструментов (компилятор, компоновщик, интерпретатор, отладчик ...) может использоваться. В настоящее время у вас есть много доступных решений, так что нет абсолютно никакой реальной причины начинать что-то с нуля, по крайней мере, если целью является просто сделать игру. Период.
Чтобы ответить на ваши дополнительные вопросы, нет, по этим самым причинам я никогда не использовал свой собственный язык сценариев. Но я много страдала с некоторыми полусырыми. Поскольку они были созданы с очень узким набором функций, у них всегда были эти маленькие безумные причуды, которые сводили вас с ума. Часто вы обнаружите, что тратите очень много времени, пытаясь обойти ограничения языка вместо того, чтобы просто делать свою игру.
Если вы хотите создать язык по той причине, что он предназначен для использования людьми, которые не очень хорошо знают программирование, или если вы считаете, что он вам нужен, потому что вы хотите что-то очень специфичное для предметной области, позвольте мне сказать, что это также плохие причины. Вы можете написать очень высокоуровневый API с такими функциями do_what_they_say_and_say_what_they_do()
, а также несколько очень простых шаблонных кодов, раскрывающих его основное использование. Ваши не очень технические пользователи будут рады немного освоить программирование, и вы будете рады, что вас не ограничит какой-то плохо реализованный язык.
Итак, поскольку это будет звучать немного неожиданно или даже резко, я скажу, что есть один случай, когда это может иметь смысл: если вы хотите узнать, как создается язык сценариев. Но, пожалуйста, пожалуйста, если вы сделаете это: не заставляйте других использовать это.
редактировать
Я только что посмотрел на список команд Cave Story, который вы связали. Уч:
<ECJx:y [EC?] Jump @ Jump to event Y if any npc with ID X is present
Я не хочу проявлять неуважение к разработчику, стоящему за Cave Story, но это прекрасный пример простого списка команд, который мутировал в неконтролируемом пользовательском языке сценариев. Это может все еще использоваться для отдельного разработчика или очень маленькой команды, но на этом этапе я советую переключиться на надлежащий Turing-полный и проверенный язык (например, Lua), где вы могли бы сделать:
if (npc.id == x) then
jump_to_event(y)
end
Это значительно упростит ситуацию, когда, например, вам понадобится более сложное условие:
if (npc.id == x) or (npc.type == "enemy") then
jump_to_event(y)
end