Як додати мову гри до сценарію?


25

Скажімо, у мене гра, написана на C ++. Але я хочу додати до нього деяку функціональність модифікації чи сценаріїв. Як би ви могли додавати сценарій функціональності до вашої гри?


Найпопулярніша мова: див. Lua (мова програмування) та Lua (програмування langugae) - приклад API API : IBM має чудову статтю з цього приводу: Вставлення LUA
Tamara Wijsman

Точні кроки значною мірою залежать від мови, яку ви хочете додати. Подивіться на gamedev.stackexchange.com/questions/11 / ...
tenpn

Відповіді:


27

Перш за все, ви повинні вирішити, яка частина вашої гри написана. Один із варіантів - мати повністю скриптовану гру в тому сенсі, що хоча критичні для часу операції з резервного копіювання кодуються в C ++, вся логіка гри знаходиться на мові сценаріїв. Дизайнери використовують бекенд як API, викликаний із мови сценаріїв високого рівня. З іншого боку, у вас можуть бути декілька конкретних місць, де використовуються сценарії, такі як користувальницький інтерфейс або сценарії послідовностей, при цьому більшість ігрових кодів все ще знаходяться на C ++. У кожного підходу є переваги (швидкість, гнучкість, час складання, масштаб гри тощо), але це потрібно вирішити заздалегідь.

Як тільки ви дізнаєтесь, як ви хочете використовувати сценарій, вам тепер потрібно вирішити, чи збираєтесь ви використовувати існуючу мову сценаріїв або вашу власну мову, що стосується домену . Сьогодні існує багато мов сценаріїв на вибір з різними цілями дизайну та цільовою аудиторією, тому я не впевнений, чи варто вже створювати власну. Якщо ви вирішили реалізувати власні, ось деякі ресурси:

Lua - популярний легкий і легкий для вставки мову сценаріїв. Він використовує стек для зв'язку між хостом і вбудованою мовою, і його успішно застосовують у багатьох професійних іграх . Sol2 спрощує процес зв’язування Lua і C ++. Якщо ви не любите синтаксис Луа, Moonscript - це мова, яка компілюється в Lua і додає приємний набір функцій.

До інших варіантів можна віднести AngelCode , який дозволяє безпосередньо викликати функції C і C ++. Python та Ruby трохи складніші для вбудовування, але їх дуже приємно програмувати. Якщо ви хочете вставити Python, тоді подивіться на Boost.Python . Ще одна ідея - вбудувати JavaScript, щоб скористатися швидкими движками сценаріїв, розробленими для браузерів (див. V8 та SpiderMonkey ).


2
Я реалізував мову сценаріїв для мого поточного ігрового проекту, і головна перевага - тотальний контроль над мовними примітивами. Заздалегідь створені сценарії рішення є загальними, і вам можуть не знадобитися всі функції, які вони надають. Ви абсолютно не повинні думати про те, щоб розгорнути свою власну мову, якщо ви не впевнені, що зможете зробити щось краще для своєї гри, ніж існуюче рішення.
Джон Перді,

Особисто мені подобається Guile , він чудово інтегрується з C. Єдиною проблемою є швидкість, але з випуском 2.0 в найближчі пару місяців, які також повинні покращитися.
Джо D

Відмінна відповідь. Перший абзац можна підсумувати як "розробники ігор створюють API, який використовується для вмісту".
ashes999

Узагальненим терміном для користувацьких мов (сценаріїв чи іншим способом) є DSL, який може допомогти дізнатися, чи потрібно читати.
Патрік Х'юз

2

Я написав повідомлення про вбудовуванні GameMonkey сценарію до гри з допомогою DragonFire SDK тут .

В основному ідея полягає в тому, щоб викрити свої функції C \ C ++ вибраній мовою сценаріїв і використовувати їх у своєму сценарії. У своєму підручнику я відкрив 2 функції від DragonFire SDK. При запуску гри я закликаю функцію onStart зі скрипту, а при оновленні - запускаю функцію onTimer із скрипту.

Сподіваюся, що це допомагає!


1
Я також завантажив тут демонстрацію відео: bit.ly/dnCkar
astk
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.