Ні . Принаймні, ймовірно , немає.
Це дуже частий винайдення колеса - це розробка ігор, помилка, яка все ще досить популярна.
Якщо ви задаєте це запитання, на вас, швидше за все, вплинуть те, що роблять інші, тому просто подивіться, що Epic Games щойно зробили з Unreal Engine:
- UE3 мав користувацьку, дивну, неоптимізовану, важко налагоджувану річ UnrealScript,
- Якщо слух правдивий, його підтримка знімається в UE4 , на користь перезавантажених DLL C ++.
Як ви думаєте, ви можете зробити краще, ніж Епік?
Створення мов прогамінга належить творцям мови програмування , а не інженерам ігор.
Потрібні роки та роки, щоб мова стала повністю зрілою, а супроводжуючий набір інструментів (компілятор, лінкер, перекладач, налагоджувач ..) можна використовувати. На сьогоднішній день у вас є безліч доступних рішень, тому немає абсолютно ніякої реальної причини починати нове з нуля, принаймні, не, якщо мета просто зробити гру. Період.
Щоб відповісти на ваші побічні запитання, ні, саме з цих причин я ніколи не реалізував власну мову сценаріїв. Але я багато страждав з деякими напівпеченими. Оскільки вони були створені з дуже вузькою функцією на увазі, у них завжди були такі маленькі божевільні химерності, які змушують вас з розуму. Часто ви виявите, що витрачаєте дуже багато часу, просто намагаючись подолати обмеження мови, а не просто зробити свою гру.
Якщо ви хочете створити мову, це те, що вона призначена для використання людьми, які не дуже добре знають програмування, або якщо ви вважаєте, що вам це потрібно, тому що ви хочете щось дуже доменне, дозвольте мені сказати, що вони також погані причини. Ви можете написати 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, але це прекрасний приклад простого списку команд, який мутував неконтрольованою спеціальною мовою сценаріїв. Це може бути корисно для одного розробника або дуже малої команди, але на цьому етапі я радимо перейти на належну та добре перевірену мову Тюрінга (наприклад, 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